Ejemplo n.º 1
0
        public HttpResponseMessage Post(Order_Ack_Decline_DTO order_Ack_Decline_DTO)
        {
            Order_TissueBankApiModel   order_TissueBankApiModel = new Order_TissueBankApiModel();
            TransactionalInformation   transaction = new TransactionalInformation();
            TransactionBusinessService transactionBusinessService = new TransactionBusinessService(transactionDataService);
            Status status = new Status();

            ErrorBusinessService  errorBusinessService  = new ErrorBusinessService(errorDataService);
            StatusBusinessService statusBusinessService = new StatusBusinessService(statusDataService);
            OrderBusinessService  orderBusinessService  = new OrderBusinessService(orderDataService);

            //Get  OrderCommisionDetail
            OrderCommisionDetail_TissueBank orderCommisionDetail = orderBusinessService.GetOrderCommisionDetail(order_Ack_Decline_DTO.OrderId, out transaction);

            if (order_Ack_Decline_DTO.StatusId == 1008)
            {
                //static values
                orderCommisionDetail.CustomerProfileId         = "1810434404";
                orderCommisionDetail.CustomerPaymentProfileIds = "1805183086";

                //Convert object to string to send as requestBody
                string objToPass = Utility.Utilities.SerializeObject <Order_Ack_Decline_DTO>(order_Ack_Decline_DTO);

                //create transaction
                int TransactionId = transactionBusinessService.Transaction_Create(DateTime.Now, (float)orderCommisionDetail.AlloCATFees, order_Ack_Decline_DTO.LastModifiedBy, objToPass, out transaction);

                //cut commision
                var response = ChargeCustomerProfile(orderCommisionDetail);

                // if response is not null then only save info in db.
                if (response.AuthCode != null)
                {
                    //converting response into xml format
                    string ResponseBody = Utility.Utilities.SerializeObject <ResTransaction>(response);

                    //get status from database for Success
                    status = statusBusinessService.GetStatusByStatusName("Success");

                    orderBusinessService.Order_Ack_Decline(order_Ack_Decline_DTO.OrderId, order_Ack_Decline_DTO.StatusId, order_Ack_Decline_DTO.DeclineRemark, order_Ack_Decline_DTO.ShippingMethod, order_Ack_Decline_DTO.TissueBankSendByDate, order_Ack_Decline_DTO.LastModifiedBy, TransactionId, response.AuthCode, ResponseBody, response.TransactionId, status.StatusId, orderCommisionDetail.TissueBankId, out transaction);

                    order_TissueBankApiModel.ReturnMessage = transaction.ReturnMessage;
                    order_TissueBankApiModel.ReturnStatus  = transaction.ReturnStatus;
                }
                else
                {
                    //get status from database for Success
                    status = statusBusinessService.GetStatusByStatusName("Error");

                    if (response.ErrorCode == null)
                    {
                        response.MessageCode = "Error Code from authorize.net is null.";
                    }

                    if (response.MessageDescription == null)
                    {
                        response.MessageDescription = "Response from authorize.net is null.";
                    }

                    //if response is null then log error and update transaction too.
                    string errorMessage = errorBusinessService.Error_Create(status.StatusId, response.MessageDescription, "", TransactionId, order_Ack_Decline_DTO.LastModifiedBy, response.MessageCode);

                    order_TissueBankApiModel.ReturnStatus = transaction.ReturnStatus = false;
                    order_TissueBankApiModel.ReturnMessage.Add(response.MessageDescription);
                }
            }
            else
            {
                orderBusinessService.Order_Ack_Decline(order_Ack_Decline_DTO.OrderId, order_Ack_Decline_DTO.StatusId, order_Ack_Decline_DTO.DeclineRemark, order_Ack_Decline_DTO.ShippingMethod, order_Ack_Decline_DTO.TissueBankSendByDate, order_Ack_Decline_DTO.LastModifiedBy, 0, "", "", "", 0, orderCommisionDetail.TissueBankId, out transaction);
            }


            if (transaction.ReturnStatus == false)
            {
                order_TissueBankApiModel.ValidationErrors = transaction.ValidationErrors;
                return(Request.CreateResponse <Order_TissueBankApiModel>(HttpStatusCode.BadRequest, order_TissueBankApiModel));
            }
            else
            {
                return(Request.CreateResponse <Order_TissueBankApiModel>(HttpStatusCode.OK, order_TissueBankApiModel));
            }
        }