Пример #1
0
        public IActionResult Send()
        {
            StringBuilder body = new StringBuilder();
            Dictionary <string, byte[]> attachments = new Dictionary <string, byte[]>();
            Form          form          = this.Storage.GetRepository <IFormRepository>().WithKey(int.Parse(this.Request.Form["formId"]));
            CompletedForm completedForm = new CompletedForm();

            completedForm.FormId  = form.Id;
            completedForm.Created = DateTime.Now;
            this.Storage.GetRepository <ICompletedFormRepository>().Create(completedForm);
            this.Storage.Save();

            foreach (Field field in this.Storage.GetRepository <IFieldRepository>().FilteredByFormId(form.Id))
            {
                FieldType fieldType = this.Storage.GetRepository <IFieldTypeRepository>().WithKey(field.FieldTypeId);

                if (fieldType.Code == "FileUpload")
                {
                    IFormFile file = this.Request.Form.Files[string.Format("field{0}", field.Id)];

                    if (file != null && !string.IsNullOrEmpty(file.FileName))
                    {
                        string filename = file.FileName;

                        if (!string.IsNullOrEmpty(filename) && filename.Contains("\\"))
                        {
                            filename = filename.Substring(filename.LastIndexOf("\\") + 1);
                        }

                        attachments.Add(filename, this.GetBytesFromStream(file.OpenReadStream()));
                    }
                }

                else
                {
                    string value = this.Request.Form[string.Format("field{0}", field.Id)];

                    body.AppendFormat("<p>{0}: {1}</p>", this.GetLocalizationValue(field.NameId), value);

                    CompletedField completedField = new CompletedField();

                    completedField.CompletedFormId = completedForm.Id;
                    completedField.FieldId         = field.Id;
                    completedField.Value           = value;
                    this.Storage.GetRepository <ICompletedFieldRepository>().Create(completedField);
                }
            }

            this.Storage.Save();
            this.SendEmail(form, body.ToString(), attachments);

            string redirectUrl = form.RedirectUrl;

            if (this.configurationRoot["Globalization:SpecifyCultureInUrl"] == "yes")
            {
                redirectUrl = "/" + CultureInfo.CurrentCulture.TwoLetterISOLanguageName + redirectUrl;
            }

            return(this.Redirect(redirectUrl));
        }
Пример #2
0
 public CompletedFormViewModel Create(CompletedForm completedForm)
 {
     return(new CompletedFormViewModel()
     {
         Id = completedForm.Id,
         Form = new FormViewModelFactory().Create(completedForm.Form),
         Created = completedForm.Created
     });
 }
Пример #3
0
 public ViewViewModel Create(CompletedForm completedForm)
 {
     return(new ViewViewModel()
     {
         Id = completedForm.Id,
         CompletedFields = completedForm.CompletedFields.Select(
             cf => new CompletedFieldViewModelFactory().Create(cf)
             )
     });
 }
 public CompletedFormViewModel Create(CompletedForm completedForm)
 {
     return(new CompletedFormViewModel()
     {
         Id = completedForm.Id,
         Form = new FormViewModelFactory(this.RequestHandler).Create(
             this.RequestHandler.Storage.GetRepository <IFormRepository>().WithKey(completedForm.FormId)
             ),
         Created = completedForm.Created.ToDateTime()
     });
 }
Пример #5
0
        public ViewViewModel Create(int id)
        {
            CompletedForm completedForm = this.RequestHandler.Storage.GetRepository <ICompletedFormRepository>().WithKey((int)id);

            return(new ViewViewModel()
            {
                Id = completedForm.Id,
                CompletedFields = this.RequestHandler.Storage.GetRepository <ICompletedFieldRepository>().FilteredByCompletedFormId(completedForm.Id).Select(
                    cf => new CompletedFieldViewModelFactory(this.RequestHandler).Create(cf)
                    )
            });
        }
Пример #6
0
        public IActionResult Send()
        {
            StringBuilder body          = new StringBuilder();
            Form          form          = this.Storage.GetRepository <IFormRepository>().WithKey(int.Parse(this.Request.Form["formId"]));
            CompletedForm completedForm = new CompletedForm();

            completedForm.FormId  = form.Id;
            completedForm.Created = DateTime.Now.ToUnixTimestamp();
            this.Storage.GetRepository <ICompletedFormRepository>().Create(completedForm);
            this.Storage.Save();

            foreach (Field field in this.Storage.GetRepository <IFieldRepository>().FilteredByFormId(form.Id))
            {
                string value = this.Request.Form[string.Format("field{0}", field.Id)];

                // TODO: change the way the localized value is retrieved
                body.AppendFormat(
                    "<p>{0}: {1}</p>",
                    this.Storage.GetRepository <ILocalizationRepository>().FilteredByDictionaryId(field.NameId).First().Value,
                    value
                    );

                CompletedField completedField = new CompletedField();

                completedField.CompletedFormId = completedForm.Id;
                completedField.FieldId         = field.Id;
                completedField.Value           = value;
                this.Storage.GetRepository <ICompletedFieldRepository>().Create(completedField);
            }

            this.Storage.Save();
            this.SendEmail(form, body.ToString());

            // TODO: add RedirectUrl property to the Form class
            string referer = this.Request.Headers["Referer"];

            if (string.IsNullOrEmpty(referer))
            {
                referer = "/";
            }

            return(this.Redirect(referer));
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            string userType = null;

            if (!string.IsNullOrEmpty(UserNameTextBox.Text) && !string.IsNullOrEmpty(passwordTextBox.Text) && !string.IsNullOrEmpty(idTextBox.Text) && !string.IsNullOrEmpty(emailTextBox.Text))
            {
                int i = Convert.ToInt32(idTextBox.Text);
                if (i >= 100000)
                {
                    userType = "Student";
                }
                else
                {
                    userType = "Admin";
                }

                BsonDocument temp = new BsonDocument {
                    { "UserName", UserNameTextBox.Text },
                    { "Password", passwordTextBox.Text },
                    { "ID", idTextBox.Text },
                    { "Type", userType },
                    { "Email", emailTextBox.Text }
                };

                if (MainHandlers.DatabaseHandler.Database.GetCollection(Common.Models.Collections.Users).Find(new BsonDocument {
                    { "UserName", UserNameTextBox.Text }
                }).FirstOrDefault() == null)
                {
                    MainHandlers.DatabaseHandler.Database.GetCollection(Common.Models.Collections.Users).InsertOne(temp);
                    Background = Brushes.Green;
                    Thread.Sleep(300);
                    Background = Brushes.White;
                    CompletedForm?.Invoke(this, null);
                }
                else
                {
                    string content = $"A username of: {UserNameTextBox.Text} already exists.";
                    MessageBox.Show(content, "Ok");
                }
            }
        }
Пример #8
0
        private void ProduceCompletedForms(Form form, IDictionary <Field, string> valuesByFields, IDictionary <string, byte[]> attachmentsByFilenames)
        {
            CompletedForm completedForm = new CompletedForm();

            completedForm.FormId  = form.Id;
            completedForm.Created = DateTime.Now;
            this.Storage.GetRepository <ICompletedFormRepository>().Create(completedForm);
            this.Storage.Save();

            foreach (KeyValuePair <Field, string> valueByField in valuesByFields)
            {
                CompletedField completedField = new CompletedField();

                completedField.CompletedFormId = completedForm.Id;
                completedField.FieldId         = valueByField.Key.Id;
                completedField.Value           = valueByField.Value;
                this.Storage.GetRepository <ICompletedFieldRepository>().Create(completedField);
            }

            this.Storage.Save();
        }
Пример #9
0
        private async Task ProduceCompletedForms(Form form, IDictionary <Field, string> valuesByFields, IDictionary <string, byte[]> attachmentsByFilenames)
        {
            CompletedForm completedForm = new CompletedForm();

            completedForm.FormId  = form.Id;
            completedForm.Created = DateTime.Now;
            this.Storage.GetRepository <int, CompletedForm, CompletedFormFilter>().Create(completedForm);
            await this.Storage.SaveAsync();

            foreach (KeyValuePair <Field, string> valueByField in valuesByFields)
            {
                CompletedField completedField = new CompletedField();

                completedField.CompletedFormId = completedForm.Id;
                completedField.FieldId         = valueByField.Key.Id;
                completedField.Value           = valueByField.Value;
                this.Storage.GetRepository <int, CompletedField, CompletedFieldFilter>().Create(completedField);
            }

            await this.Storage.SaveAsync();
        }
 protected void OnCompletedForm(EventArgs e)
 {
     CompletedForm?.Invoke(this, null);
 }