public IHttpActionResult Post(EmailAccountEntityModel entityModel) { if (!ModelState.IsValid) { return(BadRequest()); } //create a new email account var emailAccount = new EmailAccount() { Id = entityModel.Id, Email = entityModel.Email, UserName = entityModel.UserName, FromName = entityModel.FromName, Host = entityModel.Host, UseSsl = entityModel.UseSsl, Port = entityModel.Port, UseDefaultCredentials = entityModel.UseDefaultCredentials, Password = _cryptographyService.Encrypt(entityModel.Password) }; //if this is the first account, we'll set it as default emailAccount.IsDefault = _emailAccountService.Count() == 0; //save it _emailAccountService.Insert(emailAccount); VerboseReporter.ReportSuccess("Successfully saved email account", "post_emailaccount"); return(RespondSuccess(new { EmailAccount = emailAccount.ToEntityModel() })); }
public static EmailAccountEntityModel ToEntityModel(this EmailAccount emailAccount) { var model = new EmailAccountEntityModel() { Id = emailAccount.Id, Email = emailAccount.Email, UserName = emailAccount.UserName, FromName = emailAccount.FromName, IsDefault = emailAccount.IsDefault, Host = emailAccount.Host, UseSsl = emailAccount.UseSsl, Port = emailAccount.Port, UseDefaultCredentials = emailAccount.UseDefaultCredentials }; return(model); }
public IHttpActionResult Put(EmailAccountEntityModel entityModel) { if (!ModelState.IsValid) { return(BadRequest()); } //get the account var emailAccount = _emailAccountService.Get(entityModel.Id); if (emailAccount == null) { return(NotFound()); } emailAccount.FromName = entityModel.FromName; emailAccount.Host = entityModel.Host; emailAccount.IsDefault = entityModel.IsDefault; emailAccount.Port = entityModel.Port; emailAccount.UseDefaultCredentials = entityModel.UseDefaultCredentials; emailAccount.UseSsl = entityModel.UseSsl; emailAccount.UserName = entityModel.UserName; emailAccount.Email = entityModel.Email; //we'll change password if it's provided if (!string.IsNullOrEmpty(entityModel.Password)) { emailAccount.Password = _cryptographyService.Encrypt(entityModel.Password); } //save it _emailAccountService.Update(emailAccount); //if this is a default account now, update the previous one if (emailAccount.IsDefault) { var oldDefaultEmailAccount = _emailAccountService.FirstOrDefault(x => x.IsDefault && x.Id != emailAccount.Id); if (oldDefaultEmailAccount != null) { oldDefaultEmailAccount.IsDefault = false; _emailAccountService.Update(emailAccount); } } VerboseReporter.ReportSuccess("Successfully updated email account", "put_emailaccount"); return(RespondSuccess(new { EmailAccount = emailAccount.ToEntityModel() })); }
public IHttpActionResult TestEmail(EmailAccountEntityModel entityModel) { if (!ModelState.IsValid) { return(BadRequest()); } const string contextName = "post_testemail"; var emailAccount = new EmailAccount() { Id = entityModel.Id, Email = entityModel.Email, UserName = entityModel.UserName, FromName = entityModel.FromName, Host = entityModel.Host, UseSsl = entityModel.UseSsl, Port = entityModel.Port, UseDefaultCredentials = entityModel.UseDefaultCredentials, }; if (entityModel.Id != 0 && string.IsNullOrEmpty(entityModel.Password)) { //a saved account is being tested, we'll need to retrieve the password from database to use appropriate password var savedEmailAccount = _emailAccountService.Get(entityModel.Id); if (savedEmailAccount != null) { emailAccount.Password = savedEmailAccount.Password; } } else { emailAccount.Password = _cryptographyService.Encrypt(entityModel.Password); } var result = _emailSender.SendTestEmail(entityModel.TestEmail, emailAccount); return(result ? RespondSuccess("Successfully sent test email", contextName) : RespondFailure()); }