/// <summary> /// Generates an Email Record with a status of Pending to be sent by the Email Service /// </summary> /// <param name="receipt">Receipt email address (only one)</param> /// <param name="subject">Email subject</param> /// <param name="body">Email body (HTML)</param> /// <param name="username">Username that requested the email creation</param> /// <param name="employeeId">EmployeeId of the Username that requested the email creation</param> public CS_Email SaveEmail(string receipt, string subject, string body, string username, int? employeeId) { string senderEmail = string.Empty; SettingsModel model = new SettingsModel(_unitOfWork); string[] emailConfiguration = model.GetEmailConfiguration(); senderEmail = string.Format("{0}@{1}", emailConfiguration[0], emailConfiguration[2]); CS_Email email = new CS_Email(); email.Sender = senderEmail; email.Receipts = receipt; email.Subject = subject; email.Body = body; email.Status = (short)Globals.EmailService.Status.Pending; email.StatusDate = DateTime.Now; email.CreatedBy = username; email.CreationID = employeeId; email.CreationDate = DateTime.Now; email.ModifiedBy = username; email.ModificationID = employeeId; email.ModificationDate = DateTime.Now; email.Active = true; return _emailRepository.Add(email); }
/// <summary> /// Updates the Email status /// </summary> /// <param name="email">Email row</param> /// <param name="status">New Status</param> public CS_Email UpdateStatusEmail(CS_Email email, Globals.EmailService.Status status) { using (TransactionScope scope = new TransactionScope()) { email.Status = (short)status; email.StatusDate = DateTime.Now; CS_Email emailReturn = _emailRepository.Update(email); Globals.CallCriteria.CallCriteriaEmailStatus callCriteriaStatus = Globals.CallCriteria.CallCriteriaEmailStatus.Sent; switch (status) { case Globals.EmailService.Status.Pending: callCriteriaStatus = Globals.CallCriteria.CallCriteriaEmailStatus.Pending; break; case Globals.EmailService.Status.Sent: callCriteriaStatus = Globals.CallCriteria.CallCriteriaEmailStatus.Sent; break; case Globals.EmailService.Status.Error: callCriteriaStatus = Globals.CallCriteria.CallCriteriaEmailStatus.Error; break; case Globals.EmailService.Status.ConfirmationReceived: callCriteriaStatus = Globals.CallCriteria.CallCriteriaEmailStatus.ConfirmationReceived; break; case Globals.EmailService.Status.ConfirmedAndRead: callCriteriaStatus = Globals.CallCriteria.CallCriteriaEmailStatus.ReadConfirmationReceived; break; default: callCriteriaStatus = Globals.CallCriteria.CallCriteriaEmailStatus.Sent; break; } CallLogModel model = new CallLogModel(_unitOfWork); model.UpdateEmailStatusByEmailId(emailReturn.ID, callCriteriaStatus); scope.Complete(); return emailReturn; } }
public void TestIfModelIsUpdatingEmailStatus() { // Arrange CS_Email email = new CS_Email() { ID = 1, Active = true, Status = (short)Globals.EmailService.Status.Pending }; EmailModel model = new EmailModel(new FakeUnitOfWork()); CS_Email updatedEmail = null; // Act updatedEmail = model.UpdateStatusEmail(email, Globals.EmailService.Status.Sent); // Assert Assert.IsNotNull(updatedEmail); Assert.AreEqual((short)Globals.EmailService.Status.Sent, updatedEmail.Status, "Error on Status field"); }