Craft\AmForms_SubmissionsController::actionSaveSubmissionByAngular PHP Method

actionSaveSubmissionByAngular() public method

Save a form submission by Angular.
    public function actionSaveSubmissionByAngular()
    {
        $this->requirePostRequest();
        $this->requireAjaxRequest();
        // Get the form
        $handle = craft()->request->getRequiredPost('handle');
        $form = craft()->amForms_forms->getFormByHandle($handle);
        if (!$form) {
            throw new Exception(Craft::t('No form exists with the handle “{handle}”.', array('handle' => $handle)));
        }
        // Get the submission
        $submission = new AmForms_SubmissionModel();
        // Add the form to the submission
        $submission->form = $form;
        $submission->formId = $form->id;
        // Set attributes
        $fieldsLocation = craft()->request->getPost('fieldsLocation', 'fields');
        $fieldsContent = json_decode(craft()->request->getPost($fieldsLocation), true);
        $submission->ipAddress = craft()->request->getUserHostAddress();
        $submission->userAgent = craft()->request->getUserAgent();
        $submission->setContentFromPost($fieldsContent);
        $submission->setContentPostLocation($fieldsLocation);
        // Upload possible files
        foreach ($form->getFieldLayout()->getTabs() as $tab) {
            // Tab fields
            $fields = $tab->getFields();
            foreach ($fields as $layoutField) {
                // Get actual field
                $field = $layoutField->getField();
                // Look for possible file
                if ($field->type == 'Assets') {
                    $this->_uploadFilesForField($field, $submission, $fieldsContent);
                }
            }
        }
        // Save submission
        if (craft()->amForms_submissions->saveSubmission($submission)) {
            // Notification
            craft()->amForms_submissions->emailSubmission($submission);
            // Response
            $this->returnJson(array('success' => true));
        } else {
            $return = array('success' => false, 'errors' => $submission->getErrors());
            $this->returnJson($return);
        }
    }