public AppointmentDTO MakeAppointment(AppointmentDTO appointmentDTO)
        {
            var validatedAppointmentDTO = ValidateAndSetAppointment(appointmentDTO, AppointmentStatus.CREATED);

            var appointment = AppointmentConverter.FromAppointmentDTOToAppointment(validatedAppointmentDTO);

            _iAppointmentDao.Add(appointment);

            var owner     = _iUserDao.FindUserById(appointmentDTO.AdvertismentOwnerId);
            var initiator = _iUserDao.FindUserById(appointmentDTO.InitiatorId);

            EmailModelAppointment emailModel = new EmailModelAppointment
            {
                Sender            = ConfigurationManager.AppSettings["AdminEmail"],
                SenderName        = initiator.FirstName + " " + initiator.LastName,
                Receiver          = owner.Email,
                ReceiverFirstName = owner.FirstName,
                ReceiverLastName  = owner.LastName,
                EmailSubject      = EmailSubjects.NewAppointment,
                AppointmentTitle  = appointmentDTO.AdvertismentTitle,
                AppointmentDate   = appointmentDTO.AppointmentDateTime,
                EmailTemplatePath = EmailTemplatesPath.MakeAppointmentTemplate
            };

            _iMailerService.SendMailAppointments(emailModel);

            return(CreateAppoinmentNotification(appointment, owner, initiator));
        }
        public AppointmentDTO UpdateAppointmentAcceptedByInitiator(AppointmentDTO appointmentDTO)
        {
            var appointment = ValidateAndSetUpdateAppointment(appointmentDTO, AppointmentStatus.ACCEPTED_BY_INITIATOR);

            appointment.SeenByOwner     = false;
            appointment.SeenByInitiator = true;

            var owner     = _iUserDao.FindUserById(appointment.AdvertismentOwnerId);
            var initiator = _iUserDao.FindUserById(appointment.InitiatorId);

            EmailModelAppointment emailModel = new EmailModelAppointment
            {
                Sender            = ConfigurationManager.AppSettings["AdminEmail"],
                SenderName        = initiator.FirstName + " " + initiator.LastName,
                Receiver          = owner.Email,
                ReceiverFirstName = owner.FirstName,
                ReceiverLastName  = owner.LastName,
                EmailSubject      = EmailSubjects.AppointmentAccepted,
                AppointmentTitle  = appointmentDTO.AdvertismentTitle,
                AppointmentDate   = appointmentDTO.AppointmentDateTime,
                EmailTemplatePath = EmailTemplatesPath.AppointmentAcceptedTemplate
            };

            _iMailerService.SendMailAppointments(emailModel);
            _iAppointmentDao.UpdateAppointment(appointment);

            return(CreateAppoinmentNotification(appointment, owner, initiator));
        }
        private void SendEmailForDoneAppointmentToInitiator(UserModel initiator, HorseAd horseAd)
        {
            EmailModelAppointment emailModel = new EmailModelAppointment
            {
                Sender            = ConfigurationManager.AppSettings["AdminEmail"],
                Receiver          = initiator.Email,
                ReceiverFirstName = initiator.FirstName,
                ReceiverLastName  = initiator.LastName,
                EmailSubject      = EmailSubjects.HowWasTheAppointment,
                AppointmentTitle  = horseAd.Title,
                EmailTemplatePath = EmailTemplatesPath.AppointmentDoneToInitiatorTemplate
            };

            _iMailerService.SendMailAppointments(emailModel);
        }
        public void CancelAppointment(CancelAppointmentModel cancelAppointmentModel)
        {
            var appointment = _iAppointmentDao.GetById(cancelAppointmentModel.AppointmentId);

            var initiator = appointment.Initiator;
            var owner     = appointment.AdOwner;

            _iAppointmentDao.Delete(appointment);

            if (cancelAppointmentModel.OwnerCanceled)
            {
                EmailModelAppointment emailModel = new EmailModelAppointment
                {
                    Sender            = ConfigurationManager.AppSettings["AdminEmail"],
                    SenderName        = owner.FirstName + " " + owner.LastName,
                    Receiver          = initiator.Email,
                    ReceiverFirstName = initiator.FirstName,
                    ReceiverLastName  = initiator.LastName,
                    EmailSubject      = EmailSubjects.AppointmentCanceled,
                    CancelFeedback    = cancelAppointmentModel.FeedbackMessage,
                    AppointmentTitle  = cancelAppointmentModel.AdvertismentTitle,
                    EmailTemplatePath = EmailTemplatesPath.AppointmentCanceledTemplate
                };

                _iMailerService.SendMailAppointments(emailModel);
            }
            else
            {
                EmailModelAppointment emailModel = new EmailModelAppointment
                {
                    Sender            = ConfigurationManager.AppSettings["AdminEmail"],
                    SenderName        = initiator.FirstName + " " + initiator.LastName,
                    Receiver          = owner.Email,
                    ReceiverFirstName = owner.FirstName,
                    ReceiverLastName  = owner.LastName,
                    EmailSubject      = EmailSubjects.AppointmentCanceled,
                    CancelFeedback    = cancelAppointmentModel.FeedbackMessage,
                    AppointmentTitle  = cancelAppointmentModel.AdvertismentTitle,
                    EmailTemplatePath = EmailTemplatesPath.AppointmentCanceledTemplate
                };

                _iMailerService.SendMailAppointments(emailModel);
            }
        }
        private void SendTwoDaysNotifierEmailInitiator(UserModel initiator, Appointment appointment, UserModel owner, HorseAd horseAd)
        {
            EmailModelAppointment emailModel = new EmailModelAppointment
            {
                Sender              = ConfigurationManager.AppSettings["AdminEmail"],
                Receiver            = initiator.Email,
                ReceiverFirstName   = initiator.FirstName,
                ReceiverLastName    = initiator.LastName,
                EmailSubject        = EmailSubjects.AppointmentComing,
                AppointmentTitle    = horseAd.Title,
                AppointmentDate     = appointment.AppointmentDateTime,
                AppointmentLocation = horseAd.Address.Country + ", " + horseAd.Address.City + ", " + horseAd.Address.Street,
                AdOwnerEmail        = owner.FirstName,
                AdOwnerPhoneNumber  = owner.LastName,
                AdOwnerFullName     = owner.FirstName + " " + owner.LastName,
                EmailTemplatePath   = EmailTemplatesPath.AppointmentComingToInitiator
            };

            _iMailerService.SendMailAppointments(emailModel);
        }
Example #6
0
        /// <summary>
        /// Send synchronus emails for appointments
        /// </summary>
        /// <param name="emailModel">Email Model</param>
        public void SendMailAppointments(EmailModelAppointment emailModel)
        {
            var message = new MailMessage();

            message.From    = new MailAddress(emailModel.Sender);
            message.Subject = emailModel.EmailSubject;

            message.IsBodyHtml = true;

            var template = "";

            if (emailModel.EmailTemplatePath.IndexOf("~") > -1)
            {
                template = File.ReadAllText(HttpContext.Current.Server.MapPath(emailModel.EmailTemplatePath));
            }
            else
            {
                template = File.ReadAllText(emailModel.EmailTemplatePath);
            }

            message.Body = Razor.Parse(template, emailModel);

            message.To.Add(emailModel.Receiver);
            message.ReplyToList.Add(emailModel.Sender);

            using (var smtpClient = new SmtpClient())
            {
                smtpClient.EnableSsl = true;

                smtpClient.SendCompleted += (s, e) =>
                {
                    smtpClient.Dispose();
                    message.Dispose();
                };

                smtpClient.Send(message);
            }
        }