Exemplo n.º 1
0
        public ActionResult <OrderRequestDTO> RespondOrder(OrderAcceptanceResponse orderAcceptance)
        {
            var response = new OrderRequestDTO();

            var dbOrder = Orders.Where(o => o.Id == orderAcceptance.OrderId).FirstOrDefault();

            if (dbOrder != null)
            {
                if (orderAcceptance.AcceptOrder)
                {
                    dbOrder.Status = OrderStatus.Requested;
                    dbOrder.Links.AddRange(orderAcceptance.Links);
                    //chamar api lojista com status novo

                    var processor = new OrdersProcessor();
                    processor.Notify(dbOrder);
                }
                else
                {
                    dbOrder.Status = OrderStatus.Rejected;
                }

                return(Ok());
            }
            else
            {
                return(NotFound());
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> CreateOrder(OrderRequestDTO dto)
        {
            //OrderRequestDTO dto = new OrderRequestDTO();
            //string DiscountCode = Request.Form["discountCode"].ToString();
            //if (DiscountCode != "")
            //{
            //    dto.DiscountCode = DiscountCode;
            //}
            //dto.Price = double.Parse(Request.Form["Price"]);
            //string discount = Request.Form["Discount"].ToString();
            //if (discount != "")
            //{
            //    dto.Discount = double.Parse(discount);
            //}
            //dto.Notes = Request.Form["notes"];
            var userSession = (UserSession)HttpContext.Items["usersession"];

            if (userSession.User.RoleId != 3)
            {
                return(Unauthorized());
            }
            var response = await _orderService.Create(userSession.UserId, dto);

            if (response.HasError && response.Status == 406)
            {
                return(Error(response, System.Net.HttpStatusCode.NotAcceptable));
            }
            return(Ok(response));
        }
Exemplo n.º 3
0
        public void RequestOrder()
        {
            // Arrange
            var controller = new OrdersController();
            var request    = new OrderRequestDTO
            {
                Orders = new System.Collections.Generic.List <Order>()
                {
                    new Order
                    {
                        Code     = 2,
                        Quantity = 12,
                        Notes    = "qaad ads asd"
                    }
                }
            };

            OrdersController.Orders = new System.Collections.Generic.List <OrderResponseDTO>();

            // Act
            var response = controller.RequestOrder(request).Value as OrderResponseDTO;
            var expected = OrderStatus.Created;

            // Assert
            Assert.NotNull(response);
            Assert.Equal(expected, response.Status);
        }
Exemplo n.º 4
0
 private ProductInfo GetProductInfoFromDto(OrderRequestDTO requestProduct)
 {
     return(Context.ProductBalances
            .Include(pb => pb.Medicament)
            .Where(pb => pb.Id == requestProduct.ProductBalanceId)
            .Select(pb => new ProductInfo(pb))
            .First());
 }
Exemplo n.º 5
0
        public ActionResult <OrderResponseDTO> RequestOrder(OrderRequestDTO orderRequest)
        {
            var response = new OrderResponseDTO();

            if (orderRequest.Orders.Count > 0)
            {
                var id = Orders.Count + 1;

                var orderResponse = new OrderResponseDTO
                {
                    Id           = id,
                    DeliveryDate = DateTime.Now.AddDays(rnd.Next(2, 15)),
                    Status       = OrderStatus.Created,
                    OrderValue   = rnd.Next(10, 50) * 1.3m,
                    Orders       = orderRequest.Orders,
                    Links        = new List <BaseDTOLink>()
                    {
                        new BaseDTOLink {
                            Rel  = "self",
                            Href = $"http://localhost:50000/api/v1/Orders/{id}"
                        },
                        new BaseDTOLink {
                            Rel  = "status",
                            Href = $"http://localhost:50000/api/v1/Orders/{id}/status"
                        },
                        new BaseDTOLink {
                            Rel  = "acceptance",
                            Href = "http://localhost:50000/api/v1/Orders"
                        }
                    }
                };

                Orders.Add(orderResponse);

                response = orderResponse;
            }
            else
            {
                return(BadRequest());
            }

            return(response);
        }
        public async Task <Response <Order> > Create(int UserId, OrderRequestDTO dto)
        {
            var    response       = new Response <Order>();
            double discountamount = 0;
            double rate           = 0;

            try
            {
                Order order = new Order();
                order.UserId      = UserId;
                order.Description = dto.Notes;

                if (dto.DiscountCode != "")
                {
                    if (dto.DiscountType == DiscountType.Price)
                    {
                        discountamount = dto.DiscountAmount;
                    }
                    else if (dto.DiscountType == DiscountType.Percentage)
                    {
                        discountamount = dto.Price * dto.DiscountAmount / 100;
                    }
                    if (discountamount != dto.Discount)
                    {
                        response.AddValidationError("", " discount does not match with request parameters values.");
                        return(response);
                    }
                    order.DiscountCode = dto.DiscountCode;
                    order.Discount     = discountamount;
                    order.DiscountType = dto.DiscountType;
                }

                order.Price = dto.Price;
                order.Fee   = ((order.Price - discountamount) * rate / 100);
                order.Net   = ((order.Price - discountamount) - order.Fee);

                // Charges for influencer
                double amt     = order.Net + order.Fee;
                double centamt = amt * 100;

                double Commission      = (centamt * rate / 100); // give payout to influence commision rate = 15%
                double fees            = centamt - Commission;   // payable amount = (service price  - (commision rate % of service price))
                double charge          = (fees * 2.9 / 100);     // 2.9 % of service price
                double fixchargeincent = 0.30 * 100;             // 0.30 Fixed Charge
                double totalCharg      = charge + fixchargeincent;
                double finalAmount     = (fees - totalCharg);

                double cent50 = (1 * 100) / 2;

                if (finalAmount < cent50)
                {
                    response.AddValidationError("", " Can not create order.");
                    return(response);
                }
                order.Charge      = totalCharg / 100;
                order.Status      = OrderStatus.RequestPending;
                order.DateCreated = DateTime.UtcNow.ToString();
                _orderRepository.Insert(order);

                response.Success = true;
                response.Data    = order;
            }
            catch (Exception ex)
            {
                HandleException(response, ex);
            }
            return(response);
        }