Esempio n. 1
0
        // 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);
        }
Esempio n. 2
0
        // 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);
        }