Ejemplo n.º 1
0
 private static Application GetBaseApplication(ApplyApplicationModel application,
                                               Opportunity opportunity,
                                               VollyV3User user)
 {
     return(new Application()
     {
         Opportunity = opportunity,
         Name = application.Name,
         Email = application.Email,
         PhoneNumber = application.PhoneNumber,
         Message = application.Message,
         User = user,
         SubmittedDateTime = DateTime.Now
     });
 }
Ejemplo n.º 2
0
        public async Task <HttpStatusCode> ApplyAsync([FromBody] ApplyApplicationModel application)
        {
            var user = await _userManager.GetUserAsync(HttpContext.User);

            var opportunity = _context
                              .Opportunities
                              .Where(x => x.Id == int.Parse(application.OpportunityId))
                              .SingleOrDefault();
            var occurrences = _context.Occurrences.Where(x => x.Opportunity == opportunity).ToList();

            if (occurrences.Count == 0)
            {
                _context.Applications.Add(GetBaseApplication(application,
                                                             opportunity,
                                                             user));
            }
            else
            {
                var applications = application.Occurrences
                                   .Select(occurrence => occurrences.Where(x => x.Id == int.Parse(occurrence)).FirstOrDefault())
                                   .Select(x =>
                {
                    var baseApplication = GetBaseApplication(application,
                                                             opportunity,
                                                             user);
                    baseApplication.Occurrence = x;
                    return(baseApplication);
                })
                                   .ToList();
                _context.Applications.AddRange(applications);
            }

            var result = _context.SaveChanges();

            if (result <= 0)
            {
                return(HttpStatusCode.BadRequest);
            }

            var responseCode = await _emailSender.SendEmailApplicationConfirmationAsync(
                application.Name, application.Email,
                opportunity.ContactEmail,
                $"Application submitted for '{opportunity.Name}'",
                ComposeEmailMessageForApplications(application, opportunity, occurrences)
                );

            return(responseCode);
        }
Ejemplo n.º 3
0
        private static string ComposeEmailMessageForApplications(ApplyApplicationModel application,
                                                                 Opportunity opportunity,
                                                                 IEnumerable <Occurrence> occurrences)
        {
            List <string> occurrenceStrings = occurrences
                                              .Select(o =>
                                                      o.StartTime.ToShortDateString() + " " + o.StartTime.ToShortTimeString()
                                                      + " --> "
                                                      + o.EndTime.ToShortDateString() + " " + o.EndTime.ToShortTimeString()
                                                      ).ToList();

            return
                ($"<p>Received application: {application.GetEmailMessage()}</p>" +
                 $"<p>{opportunity.Description}</p>" +
                 $"<p><b>Address: {opportunity.Address}</b></p>" +
                 $"<p><b>Times: <p>{string.Join("</p><p>", occurrenceStrings)}</p></b></p>" +
                 $"");
        }