Example #1
0
        public dynamic Post(string enrollmentNumber)
        {
            Enrollment enrollment = _context.Enrollments.Include("Onboarding").Single(x => x.ExternalId == enrollmentNumber);

            if (enrollment == null)
            {
                return(new BadRequestObjectResult(new { messages = new List <string> {
                                                            onboarding.Resources.Messages.EnrollmentLinkIsNotValid
                                                        } }));
            }

            if (!enrollment.IsDeadlineValid())
            {
                return(new BadRequestObjectResult(new { messages = new List <string> {
                                                            onboarding.Resources.Messages.OnboardingExpired
                                                        } }));
            }

            enrollment.SentAt = DateTime.Now;
            _enrollmentService.Update(enrollment);

            _enrollmentStepService.Update(enrollmentNumber, "EnrollmentSummaries");

            return(Ok());
        }
        public async Task <IHttpActionResult> Edit(EnrollmentRequestDTO enrollmentDTO, int id)//se devuelve un modelo
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (enrollmentDTO.EnrollmentID != id)
            {
                return(BadRequest());
            }
            var flag = await enrollmentService.GetById(id);

            if (flag == null)
            {
                return(NotFound());
            }

            try
            {
                var enrollment = _mapper.Map <Enrollment>(enrollmentDTO);
                enrollment = await enrollmentService.Update(enrollment);

                return(Ok(enrollment));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
        public async Task <IHttpActionResult> Put(EnrollmentDTO enrollmentDTO, int id) // object - cuerpo pero si es prmitivo por la url
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState)); // status code 400
            }
            if (enrollmentDTO.EnrollmentID != id)
            {
                return(BadRequest());
            }

            var flag = await enrollmentService.GetById(id);

            if (flag == null)
            {
                return(NotFound()); // status code 404
            }
            try
            {
                var enrollment = mapper.Map <Enrollment>(enrollmentDTO);
                enrollment = await enrollmentService.Update(enrollment);

                return(Ok(enrollment)); //Sastus code 200
                //return Ok(courseDTO); //Sastus code 200
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex)); //Status code 500
            }
        }
        public dynamic Post(string enrollmentNumber)
        {
            Enrollment enrollment = _enrollmentService.List().Single(x => x.ExternalId == enrollmentNumber);

            if (enrollment == null)
            {
                return(new BadRequestObjectResult(new { messages = new List <string> {
                                                            onboarding.Resources.Messages.EnrollmentLinkIsNotValid
                                                        } }));
            }

            if (!enrollment.IsDeadlineValid())
            {
                return(new BadRequestObjectResult(new { messages = new List <string> {
                                                            onboarding.Resources.Messages.OnboardingExpired
                                                        } }));
            }

            if (enrollment.SentAt.HasValue)
            {
                return(new BadRequestObjectResult(new { messages = new List <string> {
                                                            onboarding.Resources.Messages.EnrollmentInReview
                                                        } }));
            }

            string personalDataStatus = (new PersonalDataStatus(new PersonalDataValidator(_context), enrollment.PersonalData)).GetStatus();
            string financeDataStatus  = (new FinanceDataStatus(new FinanceDataValidator(_context), enrollment.FinanceData, new FinanceDataMessagesValidator(_context))).GetStatus();

            EnrollmentValidator enrollmentValidator = new EnrollmentValidator(_context);

            FluentValidation.Results.ValidationResult enrollmentValidatorResult = enrollmentValidator.Validate(enrollment);
            List <string> messages = enrollmentValidatorResult.Errors.Select(x => x.ErrorMessage).Distinct().ToList();

            if (personalDataStatus == "valid" && financeDataStatus == "valid" && enrollmentValidatorResult.IsValid)
            {
                string body        = GetEmailBody("enrollment_sent.html");
                string subject     = "Sua matricula foi enviada para análise";
                string messageBody = GetEmailBody("enrollment_sent.html")
                                     .Replace("{student_name}", enrollment.PersonalData.AssumedName)
                                     .Replace("{send_at}", enrollment.SentAt.Value.ToString("dd/MM/yyyy"))
                                     .Replace("{send_at_hour}", enrollment.SentAt.Value.ToString("HH:mm"));

                BackgroundJob.Enqueue(() => (new EmailHelper()).SendEmail(messageBody, subject, _configuration["EMAIL_SENDER"], enrollment.PersonalData.Email, _configuration["SMTP_USERNAME"], _configuration["SMTP_PASSWORD"]));

                enrollment.SentAt = DateTime.Now;
                _enrollmentService.Update(enrollment);

                return(Ok());
            }
            else
            {
                if (personalDataStatus != "valid")
                {
                    messages.Add("Os dados pessoais estão inválidos");
                }
                if (financeDataStatus != "valid")
                {
                    messages.Add("Os dados financeiros estão inválidos");
                }

                return(new BadRequestObjectResult(new { messages }));
            }
        }