Ejemplo n.º 1
0
        public IActionResult Index()
        {
            //Checking if the user is a guest or not. If hes not a guest, he will create a temp OrderId and store it in the cookies
            //If the user is authenticated, an OrderId will be created, only if the user doesnt have an order which is currently open
            if (!HttpContext.User.Identity.IsAuthenticated)
            {
                if (HttpContext.Request.Cookies["tempOrder_id"] == null)
                {
                    var           orderId = Guid.NewGuid();
                    string        test    = Convert.ToString(orderId);
                    CookieOptions cookie  = new CookieOptions();
                    cookie.Expires = DateTime.Now.AddDays(7);
                    Response.Cookies.Append("tempOrder_id", test, cookie);
                }
                else
                {
                    return(View());
                }
            }
            else
            {
                var  userId     = User.FindFirstValue(ClaimTypes.NameIdentifier);
                Guid GuidUserId = Guid.Empty;
                Guid.TryParse(userId, out GuidUserId);
                _ordersService.AddOrder(GuidUserId);
            }


            return(View());
        }
Ejemplo n.º 2
0
        public IActionResult addOrder(Guid id)
        {
            var product = _productsService.GetProduct(id);

            CreateOrderModel model = new CreateOrderModel();

            model.Order             = new OrderViewModel();
            model.Order.Id          = Guid.NewGuid();
            model.Order.DatePlaced  = DateTime.Now;
            model.Order.MemberEmail = User.Identity.Name;

            model.OrderDetails           = new OrderDetailsViewModel();
            model.OrderDetails.Id        = Guid.NewGuid();
            model.OrderDetails.Price     = product.Price;
            model.OrderDetails.ProductFk = product.Id;
            model.OrderDetails.OrderFk   = model.Order.Id;
            model.OrderDetails.Quantity  = 1;

            try {
                _ordersService.AddOrder(model.Order, model.OrderDetails);
                TempData["feedback"] = "Order was added successfully";
                ModelState.Clear();
            } catch {
                TempData["warning"] = "Order was not added. Check your details";
                return(RedirectToAction("Error", "Home"));
            }

            return(RedirectToAction("Index", "Products"));
        }
Ejemplo n.º 3
0
        public async Task Post([FromBody] OrderEditModel value)
        {
            var order = AutoMapper.Mapper.Map <OrderEditModel, OrderDto>(value);

            order.UserFirstName = User.Identity.Name;
            await _service.AddOrder(order);
        }
        public IActionResult RescueProducts([FromBody] Orders orders)
        {
            var userPoints = _pointsService.GetPointsByUserId(orders.UserId);
            var product    = _productsAppService.GetById(orders.ProductId);

            if (userPoints.TotalPoints < product.RescuePoints)
            {
                return(BadRequest("O saldo de pontos é menor que o total de pontos do produto"));
            }

            var userExtract = new UserExtract
            {
                InitialPoints     = userPoints.TotalPoints,
                PointsBalance     = userPoints.TotalPoints - product.RescuePoints,
                TransactionDate   = DateTime.Now.Date,
                TransactionPoints = product.RescuePoints,
                TransactionType   = Domain.Enums.TransactionTypeEnum.Output,
                UserId            = orders.UserId
            };

            orders.CreatedAt = DateTime.Now.Date;

            _userExtractService.AddUserExtract(userExtract);
            _ordersService.AddOrder(orders);

            return(Ok(orders));
        }
Ejemplo n.º 5
0
 public IActionResult Pay()
 {
     try {
         List <ProductViewModel> products = GetProducts();
         DateTime datePlaced = DateTime.Now;
         string   email      = User.Identity.Name;
         //create order
         OrderViewModel order = new OrderViewModel();
         order.DatePlaced = datePlaced;
         order.UserEmail  = email;
         order.Id         = _ordersService.AddOrder(order);
         foreach (var item in products)
         {
             OrderDetailsViewModel orderDetailsViewModel = new OrderDetailsViewModel();
             orderDetailsViewModel.Order    = _mapper.Map <Order>(order);
             orderDetailsViewModel.Product  = _mapper.Map <Product>(item);
             orderDetailsViewModel.Price    = item.Price;
             orderDetailsViewModel.Quantity = item.Quantity;
             _orderDetailsService.AddOrderDetails(orderDetailsViewModel);
         }
         HttpContext.Session.SetString(SessionKeyName, "");
         TempData["feedback"] = ("Payment was successful");
         _logger.LogInformation("User payed successfully");
     }
     catch (Exception e)
     {
         TempData["error"] = ("Error occured while paying! We will look into it!");
         _logger.LogError("Error occurred " + e.Message);
         return(RedirectToAction("Error", "Home"));
     }
     return(RedirectToAction("Index"));
 }
Ejemplo n.º 6
0
        public ActionResult <GetOrderModel> PostOrder([FromBody] PostOrderModel postOrderModel)
        {
            Order order = _mapper.Map <PostOrderModel, Order>(postOrderModel);
            Order addedOrder;

            try {
                addedOrder = _service.AddOrder(order);
            } catch (RequestException ex) {
                if (ex.Code == OrderExceptionCodes.RestaurantNotFound)
                {
                    return(NotFound(new{ message = "Restaurant id does not exist" }));
                }
                if (ex.Code == OrderExceptionCodes.ProductNotFound)
                {
                    return(NotFound(new{ message = "Product id does not exist" }));
                }
                if (ex.Code == OrderExceptionCodes.ProductNotBelongingToRestaurant)
                {
                    return(BadRequest(new{ message = "Product is not from restaurant" }));
                }
                if (ex.Code == OrderExceptionCodes.BadOrderProduct)
                {
                    return(BadRequest(new{ message = "Bad OrderProduct data" }));
                }
                return(BadRequest(new{ message = "Unknown error" }));
            }

            return(Ok(_mapper.Map <Order, GetOrderModel>(addedOrder)));
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> IndexAsync()
        {
            var cart = _cart.GetCart(Request);

            if (cart.Items.Count < 1)
            {
                return(Redirect("/"));
            }
            OrderInfoRequest orderInfo = new OrderInfoRequest();

            orderInfo.CustomerId = Int32.Parse(User.Claims.Where(c => c.Type == "UserId").First().Value);
            cart.Items.ForEach(cartItem =>
            {
                orderInfo.Items.Add(new Item {
                    ProductId = cartItem.ProductId, Quantity = cartItem.Quantity
                });
            });
            var(statusCode, result) = await _order.AddOrder(orderInfo);

            if (result == null)
            {
                ViewData["OrderError"] = "ERROR!!!";
                return(View());
            }
            ViewData["OrderResult"] = result;
            _cart.ClearCartCookie(Response);
            return(View());
        }
Ejemplo n.º 8
0
        public ActionResult AddOrder(AddOrderViewModel AddOrder)
        {
            OrderViewModel order = new OrderViewModel()
            {
                CustomerID    = AddOrder.CustomerID,
                EmployeeID    = AddOrder.EmployeeID,
                OrderDate     = DateTime.Now,
                RequiredDate  = DateTime.Now.AddDays(7),
                ShippedDate   = DateTime.Now.AddDays(2),
                Freight       = 20,
                ShipName      = _shipper.GetShippers().Where(c => c.ShipperID == AddOrder.ShipperID).FirstOrDefault().CompanyName,
                ORDER_DETAILS = new List <OrderDetailViewModel>(new OrderDetailViewModel[] {
                    new OrderDetailViewModel()
                    {
                        ProductID = AddOrder.ProductID,
                        Quantity  = AddOrder.Quantity,
                        UnitPrice = AddOrder.UnitPrice,
                        Discount  = 1
                    }
                })
            };
            int result = _order.AddOrder(order);

            if (result > 0)
            {
                return(RedirectToAction("Index"));
            }
            else
            {
                return(View());
            }
            return(View());
        }
Ejemplo n.º 9
0
        public IActionResult PurchaseOrder(Guid orderId)
        {
            var  userId     = User.FindFirstValue(ClaimTypes.NameIdentifier);
            Guid GuidUserId = Guid.Empty;

            Guid.TryParse(userId, out GuidUserId);

            var  cookieOrderId     = HttpContext.Request.Cookies["tempOrder_id"];
            Guid GuidCookieOrderId = Guid.Empty;

            Guid.TryParse(cookieOrderId, out GuidCookieOrderId);


            try
            {
                _ordersService.CloseOrder(orderId, GuidUserId);
                _ordersService.AddOrder(GuidUserId);

                if (orderId == GuidCookieOrderId)
                {
                    Response.Cookies.Delete("tempOrder_id");
                }

                TempData["Success"] = "Your Order Has been Successfully Checked Out.";
            }
            catch (Exception ex)
            {
                TempData["Warning"] = ex.Message;
            }

            return(RedirectToAction("Index", "Home"));
        }
Ejemplo n.º 10
0
        public async Task <IActionResult> Post([FromForm] OrderDTO orderDTO)
        {
            try
            {
                await _ordersService.AddOrder(orderDTO);

                return(Ok("Order record added successfully"));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task <IActionResult> AddOrder(int ticketId)
        {
            var ticket = await ticketsService.GetTicketById(ticketId);

            await ticketsService.ChangeTicketStatus(ticket, TicketStatuses.WaitingForConfirmation);

            await ordersService.AddOrder(new Order
            {
                TicketId = ticket.Id,
                Status   = (int)OrderStatuses.WaitingForConfirmation,
                UserId   = userManager.GetUserId(User)
            });

            return(View("InstructionOrderAdded"));
        }
Ejemplo n.º 12
0
        public IActionResult checkout(OrderViewModel data, Guid ordid, Guid prodId, string email)
        {
            try
            {
                email = User.Identity.Name;

                _ordersService.AddOrder(data, email);
                _orderDetailsService.AddOrderDetails(ordid, prodId, email);
                TempData["feedback"] = "Checking out succesful"; //change wherever we are using viewdata to use tempdata
                return(RedirectToAction("Index"));
            }
            catch (Exception)
            {
                return(RedirectToAction("Error", "home"));
            }
        }
Ejemplo n.º 13
0
        public async Task <Order> CreateOrder(CreateOrderInput createOrderInput)
        {
            try
            {
                Order _order = await _ordersService.AddOrder(createOrderInput);

                return(_order);
            }
            catch (Exception ex)
            {
                throw new QueryException(
                          ErrorBuilder.New()
                          .SetMessage(ex.Message)
                          .SetCode("CREATE_ERROR")
                          .Build());
            }
        }
Ejemplo n.º 14
0
 public ActionResult <Order> AddOrder([FromBody] Order order)
 {
     return(OrdersService.AddOrder(order));
 }
Ejemplo n.º 15
0
        public IActionResult FastOrder(Guid id, string firstName, string lastName, string phoneNumber)
        {
            bool isDataValid = this.ValidateFastOrderData(firstName, lastName, phoneNumber);

            if (!isDataValid)
            {
                return(BadRequest());
            }

            Order myOrder = new Order()
            {
                OrderDate   = DateTime.UtcNow.AddHours(+2),
                OrderStatus = OrderStatus.Confirmed
            };


            ordersService.AddOrder(myOrder);

            Product product = productsService.GetById(id);

            OrderItem item = new OrderItem()
            {
                ProductId = product.Id,
                Quantity  = 1,
                UnitPrice = product.Price,
                SubTotal  = product.Price
            };

            myOrder.OrderItems.Add(item);
            myOrder.PaymentMethod  = PaymentMethod.PayToCourier;
            myOrder.ShippingMethod = ShippingMethod.ToAddress;

            myOrder.TotalAmountInclTax = item.SubTotal;
            myOrder.TotalAmountExclTax = Math.Round(myOrder.TotalAmountInclTax / Constants.TaxAmount, 2);
            myOrder.TaxAmount          = myOrder.TotalAmountInclTax - myOrder.TotalAmountExclTax;

            if (myOrder.TotalAmountInclTax < Constants.MinPriceFreeShipping)
            {
                myOrder.ShippingTax = Constants.ShippingTax;
            }
            else
            {
                myOrder.ShippingTax = 0m;
            }

            ShortContactInfo contactInfo = new ShortContactInfo();

            contactInfo.FirstName   = firstName;
            contactInfo.LastName    = lastName;
            contactInfo.PhoneNumber = phoneNumber;


            ShortContactInfo newInfo = new ShortContactInfo()
            {
                FirstName   = firstName,
                LastName    = lastName,
                PhoneNumber = phoneNumber
            };

            newInfo.Orders.Add(myOrder);
            shortContactInfoService.Add(newInfo);

            ordersService.Update(myOrder);

            return(RedirectToAction("ShortOrderCompleted"));
        }
Ejemplo n.º 16
0
        public async Task <IActionResult> AddOrder([FromBody] DTO.Order order)
        {
            var result = await ordersService.AddOrder(order);

            return(Ok(result));
        }
Ejemplo n.º 17
0
 public async Task <IActionResult> AddOrder(AddOrderDto newOrder)
 {
     return(Ok(await _orderService.AddOrder(newOrder)));
 }
Ejemplo n.º 18
0
 public Task AddOrder(NewOrderDto order)
 {
     order.PersonId = GetPersonId();
     return(_ordersService.AddOrder(order, HttpContext.RequestAborted));
 }
Ejemplo n.º 19
0
 public OrderDto PostOrder(OrderDto newOrder, int userId)
 {
     return(_ordersService.AddOrder(newOrder, userId));
 }
Ejemplo n.º 20
0
        public IActionResult Checkout()
        {
            try
            {
                var n = _cartService.GetItems().Where(x => x.Email == User.Identity.Name).FirstOrDefault();
                //var ord = _ordersService.GetOrder(User.Identity.Name);

                var email = User.Identity.Name;
                //getcart id
                //var cart = _productsService.GetProduct(id);
                //var cartId= GetCart(); implmement

                var order = new OrderViewModel()
                {
                    UserEmail  = email,
                    DatePlaced = DateTime.Now
                };

                _ordersService.AddOrder(order);

                /*
                 * var orderid = _ordersService.GetOrder(email).Id;
                 *
                 * foreach (var x in n.CartItems)
                 * {
                 *  var orderDetails = new OrderDetailsViewModel()
                 *  {
                 *       Price = x.Product.Price,
                 *       Quantity = x.Quantity,
                 *       ProductFk = x.Product.Id,
                 *       OrderId = order.Id
                 *  };
                 *  _orderDetailsService.AddOrderDetails(orderDetails);
                 * }
                 */

                TempData["feedback"] = "Order was added successfully";
            }
            catch (Exception ex)
            {
                //log error
                TempData["warning"] = "Order was not added! " + ex;
                return(RedirectToAction("error", "Home"));
            }

            return(RedirectToAction("Index", "Products"));

            /*
             * if (_ordersService.Checkout(User.Identity.Name))
             * {
             *  TempData["feedback"] = "Your order was created";
             *  //empty cart
             *  return RedirectToAction("Index", "Products");
             * }
             * else
             * {
             *  TempData["feedback"] = "Something went wrong with your order!";
             *  return RedirectToAction("Index", "Products");
             * }
             */
        }