Exemple #1
0
        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);
        }
Exemple #2
0
        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"));
        }