//Todo: implement this...
        private async Task SendRequestEmail(HireRequestDTO request)
        {
            try {
                var replacement = new StringDictionary
                {
                    ["Departurelocation"] = request.Departure,
                    ["Arrivallocation"]   = request.Destination,
                    ["Departuredate"]     = request.DepartureDate.ToString(CoreConstants.DateFormat),
                    ["Firstname"]         = request.FirstName,
                    ["Lastname"]          = request.LastName,
                    ["Email"]             = request.Email,
                    ["Phone"]             = request.PhoneNumber,
                    ["BusNo"]             = request.NumberOfBuses.ToString(),
                };

                var adminMail = new Mail(appConfig.AppEmail, "Libmot.com: New Hire Request", appConfig.HiredBookingEmail.Split(",", StringSplitOptions.RemoveEmptyEntries))
                {
                    BodyIsFile = true,
                    BodyPath   = Path.Combine(_hostingEnvironment.ContentRootPath, CoreConstants.Url.AdminHireBookingEmail)
                };

                var customerMail = new Mail(appConfig.AppEmail, "Libmot.com:Booking Request confirmation", request.Email)
                {
                    BodyIsFile = true,
                    BodyPath   = Path.Combine(_hostingEnvironment.ContentRootPath, CoreConstants.Url.CustomerHireBookingEmail)
                };

                await Task.WhenAll(_mailSvc.SendMailAsync(adminMail, replacement),
                                   _mailSvc.SendMailAsync(customerMail, replacement));
            }
            catch (Exception) {
            }
        }
Example #2
0
 public async Task <IServiceResponse <bool> > Add(HireRequestDTO request)
 {
     return(await HandleApiOperationAsync(async() => {
         await _hireRequestSvc.CreateRequest(request);
         return new ServiceResponse <bool>(true);
     }));
 }
        public async Task CreateRequest(HireRequestDTO hireRequest)
        {
            if (hireRequest is null)
            {
                throw new LMEGenericException($"Request is invalid.");
            }

            if (hireRequest.RequestDate < Clock.Now)
            {
                throw new LMEGenericException($"Request date cannot be in the past.");
            }

            if (hireRequest.DepartureDate < Clock.Now)
            {
                throw new LMEGenericException($"Departure date cannot be in the past.");
            }

            _repo.Insert(new HireRequest
            {
                Address              = hireRequest.Address,
                CreatorUserId        = _serviceHelper.GetCurrentUserId(),
                Departure            = hireRequest.Departure,
                DepartureDate        = hireRequest.DepartureDate,
                Destination          = hireRequest.Destination,
                Email                = hireRequest.Email,
                FirstName            = hireRequest.FirstName,
                Gender               = hireRequest.Gender,
                LastName             = hireRequest.LastName,
                MiddleName           = hireRequest.MiddleName,
                NextOfKinName        = hireRequest.NextOfKinName,
                NextOfKinPhoneNumber = hireRequest.NextOfKinPhoneNumber,
                NumberOfBuses        = hireRequest.NumberOfBuses,
                PhoneNumber          = hireRequest.PhoneNumber,
                RequestDate          = hireRequest.RequestDate
            });

            await _unitOfWork.SaveChangesAsync();

            await SendRequestEmail(hireRequest);
        }