public HttpResult Patch(PatchMessage request) { if (request.Id <= 0) return new HttpResult(HttpStatusCode.NotFound, "Message was not found."); // Only resend e-mail supported by patch at the moment if (!request.ResendEmail) return new HttpResult(HttpStatusCode.NotImplemented, "Message PATCH only supports resending e-mail."); var ds = new DataStore(); var message = ds.GetMessage(request.Id); var client = new EmailClient(); var emailResult = client.Send(message); if (emailResult.Success) { ds.InsertMessageStatus(request.Id, 2); } else { ds.InsertMessageStatus(request.Id, 3, emailResult.Message, emailResult.SmtpException); return new HttpResult(HttpStatusCode.OK, "Message failed to send."); } return new HttpResult(HttpStatusCode.OK, "Message was updated."); }
public HttpResult Post(CreateMessage request) { // POST does not support update //if (request.Id > 0) // return new HttpResult(HttpStatusCode.NotFound, "POST does not support updating idividual messages."); //var id = request.Id; var ds = new DataStore(); var id = ds.InsertMessage(request); var client = new EmailClient(); var emailResult = client.Send(request); var response = new MessageResponse { Id = id, Success = true }; if (emailResult.Success) { ds.InsertMessageStatus(id, 2); } else { ds.InsertMessageStatus(id, 3, emailResult.Message, emailResult.SmtpException); response.Result = emailResult.Message; response.Success = false; } var result = new HttpResult(response) { StatusCode = HttpStatusCode.Created, StatusDescription = RequestContext.AbsoluteUri.CombineWith(id) }; return result; }
public HttpResult Put(UpdateMessage request) { // PUT does not support create if (request.Id <= 0) return new HttpResult(HttpStatusCode.NotFound, "Message was not found."); var ds = new DataStore(); ds.UpdateMessage(request); // Resend e-mail if requested if (request.ResendEmail) { var savedMesssage = ds.GetMessage(request.Id); var client = new EmailClient(); var emailResult = client.Send(savedMesssage); if (emailResult.Success) { ds.InsertMessageStatus(request.Id, 2); } else { ds.InsertMessageStatus(request.Id, 3, emailResult.Message, emailResult.SmtpException); return new HttpResult(HttpStatusCode.OK, "Message was updated, but e-mail failed to send."); } } return new HttpResult(HttpStatusCode.OK, "Message was updated."); }