public async Task InsertApplication(VacancyApplicationBaseModel vacancyApplication, IEnumerable <VacancyEducationBaseModel> vacancyEducation, IEnumerable <WorkHistoryBaseModel> vacancyWorkHistory, IEnumerable <VacancyQuestionAnswerBaseModel> questionAnswers) { const string query = @"insert into dbo.VacancyApplication (VacancyId, FirstName, LastName, AddressLine1, AddressLine2, AddressLine3, AddressLine4, PostCode, EmailAddress, PhoneNumber) OUTPUT Inserted.ID values (@VacancyId, @FirstName, @LastName, @AddressLine1, @AddressLine2, @AddressLine3, @AddressLine4, @PostCode, @EmailAddress, @PhoneNumber); "; var parameters1 = new { vacancyApplication.VacancyId, vacancyApplication.FirstName, vacancyApplication.LastName, vacancyApplication.AddressLine1, vacancyApplication.AddressLine2, vacancyApplication.AddressLine3, vacancyApplication.AddressLine4, vacancyApplication.PostCode, vacancyApplication.EmailAddress, vacancyApplication.PhoneNumber }; var vacancyApplicationId = await SqlDataAccess.SaveData <dynamic>(query, parameters1, true); var applicationWorkHistory = new ApplicationWorkHistoryCrud(); var applicationEducation = new ApplicationEducationCrud(); var applicationCustomQuestionAnswers = new ApplicationCustomQuestionAnswersCrud(); await applicationEducation.InsertMultiple(vacancyEducation, vacancyApplicationId); await applicationWorkHistory.InsertMultiple(vacancyWorkHistory, vacancyApplicationId); await applicationCustomQuestionAnswers.InsertMultiple(questionAnswers, vacancyApplicationId); }
public async Task <IActionResult> Create(int id, CreateViewModel application) { var vacancy = await _vacancyCrud.FindById(id); if (vacancy == null) { return(VacancyNotFound()); } var customQuestions = await _vacancyQuestionCrud.FindAll(id); if (!ModelState.IsValid) { application.EducationTypes = await ConvertEducationTypesToSelectList(); application.Questions = customQuestions; return(View(application)); } var vacancyApplication = new VacancyApplicationBaseModel { FirstName = _htmlSanitizer.Sanitize(application.VacancyApplication.FirstName), LastName = _htmlSanitizer.Sanitize(application.VacancyApplication.LastName), AddressLine1 = _htmlSanitizer.Sanitize(application.VacancyApplication.AddressLine1), AddressLine2 = _htmlSanitizer.Sanitize(application.VacancyApplication.AddressLine2), AddressLine3 = _htmlSanitizer.Sanitize(application.VacancyApplication.AddressLine3), AddressLine4 = _htmlSanitizer.Sanitize(application.VacancyApplication.AddressLine4), PostCode = _htmlSanitizer.Sanitize(application.VacancyApplication.PostCode), PhoneNumber = _htmlSanitizer.Sanitize(application.VacancyApplication.PhoneNumber), EmailAddress = _htmlSanitizer.Sanitize(application.VacancyApplication.EmailAddress), VacancyId = id }; var vacancyEducation = application.Education.Select(educationViewModel => new VacancyEducationBaseModel { EducationTypeId = educationViewModel.EducationTypeId, Description = _htmlSanitizer.Sanitize(educationViewModel.Description), }).ToList(); var vacancyWorkHistory = new List <WorkHistoryBaseModel>(); foreach (var workHistory in application.WorkHistory) { vacancyWorkHistory.Add( new WorkHistoryBaseModel { Summary = _htmlSanitizer.Sanitize(workHistory.Summary), EmployerName = _htmlSanitizer.Sanitize(workHistory.EmployerName), JobTitle = _htmlSanitizer.Sanitize(workHistory.JobTitle), StartDate = workHistory.StartDate, EndDate = workHistory.EndDate }); } var questionAnswers = new List <VacancyQuestionAnswerBaseModel>(); // same order as questions for (var i = 0; i < customQuestions.Count; i++) { questionAnswers.Add(new VacancyQuestionAnswerBaseModel { Answer = _htmlSanitizer.Sanitize(application.Answers[i].Answer), VacancyCustomQuestionId = customQuestions[i].Id }); } try { await _applicationCrud.InsertApplication(vacancyApplication, vacancyEducation, vacancyWorkHistory, questionAnswers); } catch (Exception) { return(BadRequest()); } return(RedirectToAction("Success")); }