// POST /api/messages public HttpResponseMessage Post(MessageModels.SubmitMessageRequest request) { _logger.Log(LogLevel.Info, String.Format("{0} - New Message Posted {1} {2} {3} {4}", request.apiKey, request.senderUri, request.recipientUri, request.recipientFirstName, request.recipientLastName)); Domain.Message message = null; HttpResponseMessage responseMessage; try { message = _messageServices.AddMessage(request.apiKey, request.senderUri, request.recipientUri, request.senderAccountId, request.amount, request.comments, request.messageType, request.securityPin, request.latitude, request.longitude, request.recipientFirstName, request.recipientLastName, request.recipientImageUri); } catch (Exception ex) { _logger.Log(LogLevel.Fatal, String.Format("Exception Adding Message {0} {1} {2}. {3}", request.apiKey, request.senderUri, request.recipientUri, ex.Message)); responseMessage = new HttpResponseMessage(HttpStatusCode.InternalServerError); responseMessage.ReasonPhrase = ex.Message; return(responseMessage); } if (message != null) { _amazonNotificationService.PushSNSNotification(ConfigurationManager.AppSettings["MessagePostedTopicARN"], "New Message Received", message.Id.ToString()); } responseMessage = new HttpResponseMessage(HttpStatusCode.Created); //responseMessage.Headers.C return(responseMessage); }
// POST /api/messages public HttpResponseMessage Post(MessageModels.SubmitMessageRequest request) { var sender = GetUser(request.senderUri); if (sender == null) { var message = new HttpResponseMessage(HttpStatusCode.BadRequest); message.ReasonPhrase = String.Format("Sender {0} specified in the request not found.", request.senderUri); return(message); } var senderAccount = GetAccount(sender, request.senderAccountId); if (senderAccount == null) { var message = new HttpResponseMessage(HttpStatusCode.BadRequest); message.ReasonPhrase = String.Format("Sender Account {0} specified in the request is inactive or not owned by Sender {1}.", request.senderAccountId, request.senderUri); return(message); } //TODO: validate application in request var application = GetApplication(request.apiKey); if (application == null) { var message = new HttpResponseMessage(HttpStatusCode.BadRequest); message.ReasonPhrase = String.Format("Application {0} specified in the request is invalid", request.apiKey); return(message); } //TODO: confirm recipient is valid??? //TODO: confirm amount is within payment limits //TODO: try to add message try { MessageType messageType = MessageType.Payment; MessageStatus messageStatus = MessageStatus.Submitted; if (request.messageType == "Payment") { messageType = MessageType.Payment; } if (request.messageType == "PaymentRequest") { messageType = MessageType.PaymentRequest; } _ctx.Messages.Add(new Message() { Amount = request.amount, Application = application, ApiKey = application.ApiKey, Comments = request.comments, CreateDate = System.DateTime.Now, Id = Guid.NewGuid(), MessageStatus = MessageStatus.Pending, MessageStatusValue = (int)messageStatus, MessageType = messageType, MessageTypeValue = (int)messageType, RecipientUri = request.recipientUri, SenderUri = request.senderUri, Sender = sender, SenderId = sender.UserId, SenderAccount = senderAccount, SenderAccountId = senderAccount.Id }); _ctx.SaveChanges(); } catch (Exception ex) { var message = new HttpResponseMessage(HttpStatusCode.InternalServerError); message.ReasonPhrase = ex.Message; return(message); } var responseMessage = new HttpResponseMessage(HttpStatusCode.Created); //responseMessage.Headers.C return(responseMessage); }