Esempio n. 1
0
        public async Task AddOrderAsync_ShoudThrowExceptionNoProduct()
        {
            var request = new AddOrderRequest
            {
                UserId   = mockOrder.UserId,
                Products = new List <AddOrderProductRequest>
                {
                    new AddOrderProductRequest
                    {
                        ProductId = mockProductOrder.ProductId,
                        Quantity  = mockProductOrder.Quantity
                    }
                }
            };

            var listProducts = new List <Product>
            {
                mockProduct
            };

            mockUserRepository.Setup(m => m.GetById(It.IsAny <int>()))
            .Returns(mockUser);

            await Assert.ThrowsAsync <Exception>(() => orderService.AddOrderAsync(request));
        }
Esempio n. 2
0
        public async Task <Response <Order> > PlaceOrder(AddOrderRequest request)
        {
            var order = new Order();


            double            total        = 0;
            List <OrderEntry> orderEntries = new List <OrderEntry>();

            foreach (var temp in request.Orders)
            {
                var orderEntry = new OrderEntry();
                orderEntry.MenuId   = temp.MenuId;
                orderEntry.Price    = _context.Menu.Where(w => w.Id == temp.MenuId).FirstOrDefault().Price;
                orderEntry.Quantity = temp.Quantity;
                orderEntry.OrderId  = order.Id;

                orderEntry._CreatedDate = DateUtils.GetDateNow();
                orderEntry.CreatedBy    = "SYSTEM";
                orderEntry.Id           = new Guid();

                total += orderEntry.Price * temp.Quantity;

                orderEntries.Add(orderEntry);
            }

            order.Total = total;

            _context.Order.Add(order);
            _context.OrderEntry.AddRange(orderEntries);

            await _context.SaveChangesAsync();

            return(new Response <Order>());
        }
Esempio n. 3
0
        public void AddOrders()
        {
            List <Order> pendingOrders = OrderService.GetOrders(StatusID: (int)Beasts.Model.Status.Pending).ToList();

            foreach (Order order in pendingOrders)
            {
                try
                {
                    if (PayPal.CheckSale(order.PaypalSaleID))
                    {
                        AddOrderRequest addOrderRequest = Mapper.Map <AddOrderRequest>(order);

                        AddOrderResponse addOrderResponse = client.AddOrder(addOrderRequest);

                        if (addOrderResponse.Result == 1 && addOrderResponse.Order != null)
                        {
                            order.PrintAuraID = addOrderResponse.Order.OrderId;
                            order.Status      = Beasts.Model.Status.Processing;
                            OrderService.UpdateOrder(order);
                        }
                    }
                }
                catch (Exception ex)
                {
                    ExceptionService.CreateException(ex);
                }
            }
        }
Esempio n. 4
0
        public void AddOrder(AddOrderRequest request)
        {
            var validationResult = _validator.ValidateRequest(request);

            if (!validationResult.PassedValidation)
            {
                throw new ArgumentException(validationResult.Errors.First());
            }

            var clinic = _context.Patient.First(x => x.Id == request.PatientId).Clinic;

            var newOrder = new Order
            {
                Id          = Guid.NewGuid(),
                StartTime   = request.StartTime,
                EndTime     = request.EndTime,
                PatientId   = request.PatientId,
                DoctorId    = request.DoctorId,
                SurgeryType = (int)clinic.SurgeryType
            };

            _context.Order.Add(newOrder);

            _context.SaveChanges();
        }
Esempio n. 5
0
        public async Task <IHttpActionResult> PostOrder(AddOrderRequest dto)
        {
            await orderService.Add(dto);

            Uow.Commit();
            return(await Task.FromResult(Ok()));
        }
Esempio n. 6
0
        public IActionResult addOrder(CustomerDbContext _context, AddOrderRequest request, int _clientId)
        {
            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    var cakesNotInDatabase = 0;
                    //check if products from the request exist in the database
                    request.Confectionery.ForEach(x =>
                    {
                        if (_context.Confectioneries.Where(y => y.Name == x.Name).FirstOrDefault() == null)
                        {
                            cakesNotInDatabase++;
                        }
                    });


                    //If a product has been provided that is not in the database, stop processing the request and return the appropriate error code
                    if (cakesNotInDatabase != 0)
                    {
                        return(NotFound("One of the confectionaries doesnt exist in the database"));
                    }

                    var nextIdOrder = _context.Orders.Max(o => o.IdOrder) + 1;

                    Order o = new Order
                    {
                        IdClient     = _clientId,
                        IdOrder      = nextIdOrder,
                        DateAccepted = request.DateAccepted,
                        DateFinished = DateTime.Now,
                        Notes        = request.Notes,
                    };
                    _context.Orders.Add(o);

                    var result = request.Confectionery.Select(conf => new Confectionery_Order
                    {
                        IdConfection = _context.Confectioneries.Where(dbConf => dbConf.Name.Equals(conf.Name)).Select(dbConf => dbConf.IdConfecti).ToList().First(),
                        IdOrder      = nextIdOrder,
                        Quantity     = conf.Quantity,
                        Notes        = conf.Notes
                    });

                    foreach (Confectionery_Order co in result)
                    {
                        _context.Confectionery_Orders.Add(co);
                    }

                    _context.SaveChanges();
                    transaction.Commit();
                    return(Ok("Created a new order"));
                }

                catch (Exception e)
                {
                    transaction.Rollback();
                    return(BadRequest(e));
                }
            }
        }
        public PdrValidationResult ValidateRequest(AddOrderRequest request)
        {
            var result = new PdrValidationResult(true);

            if (MissingRequiredFields(request, ref result))
            {
                return(result);
            }

            if (PatientNotFound(request, ref result))
            {
                return(result);
            }

            if (DoctorNotFound(request, ref result))
            {
                return(result);
            }

            if (DoctorIsAlreadyScheduled(request, ref result))
            {
                return(result);
            }

            return(result);
        }
        public bool InsertOrder(string clientId)
        {
            Log.Info("InsertOrder init...");
            Log.Debug("Adding order for client id " + clientId);
            var success = true;
            var order   = new AddOrderRequest(clientId);

            Log.Info("Inserting order for product " + order.ProductId + ", and domain " + order.DomainName);
            try
            {
                var     request           = ResolveRequest(order);
                var     response          = _restClient.Execute(request) as RestResponse;
                dynamic processedResponse = ProcessResponse(response);

                if (!IsSuccess(processedResponse))
                {
                    throw new Exception("API returns error.");
                }
                if (!AcceptOrder(processedResponse.orderid.ToString()))
                {
                    throw new Exception("Unable to accept order.");
                }
            }
            catch (Exception ex)
            {
                Log.Error("Order not added due to error: " + ex.Message);
                success = false;
            }
            Log.Info("InsertOrder end.");
            return(success);
        }
Esempio n. 9
0
        public string AddOrder(AddOrderRequest request, int customerId)
        {
            using (var trans = _context.Database.BeginTransaction())
            {
                var orderId = _context.Order.Select(o => o.IdOrder).Max() + 1;


                if (request.Confectionery is null || request.Notes is null)
                {
                    trans.Rollback();
                    return(null);
                }
                try
                {
                    var Order = new Order
                    {
                        DateAccepted = request.DateAccepted,
                        DateFinished = DateTime.Now,
                        Notes        = request.Notes,
                        IdClient     = customerId
                    };

                    _context.Order.Add(Order);
                    _context.SaveChanges();


                    // check if confectionary already exists in database if it does add to Confectionary_Order
                    foreach (var confec in request.Confectionery)
                    {
                        var confecId = _context.Confectionaries.Where(c => c.Name.Equals(confec.Name)).Select(c => c.IdConfectionary).FirstOrDefault();
                        if (confecId == 0)
                        {
                            trans.Rollback();
                            return(null);
                        }

                        // else add to confictionary_order
                        var confecOrder = new Confectionary_Order
                        {
                            IdConfection = confecId,
                            IdOrder      = orderId,
                            Quantity     = confec.Quantity,
                            Notes        = confec.Notes
                        };

                        _context.confectionary_Orders.Add(confecOrder);
                        _context.SaveChanges();
                    }

                    trans.Commit();

                    return("Order has been successfully created!");
                }
                catch (Exception e)
                {
                    trans.Rollback();
                    return(null);
                }
            }
        }
Esempio n. 10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public void AddOrder(AddOrderRequest item)
        {
            var path = "/api/Orders";

            path = path.Replace("{format}", "json");

            var    queryParams  = new Dictionary <String, String>();
            var    headerParams = new Dictionary <String, String>();
            var    formParams   = new Dictionary <String, String>();
            var    fileParams   = new Dictionary <String, FileParameter>();
            String postBody     = null;

            postBody = ApiClient.Serialize(item);                                     // http body (model) parameter

            // authentication setting, if any
            String[] authSettings = new String[] {  };

            // make the HTTP request
            IRestResponse response = (IRestResponse)ApiClient.CallApi(path, Method.POST, queryParams, postBody, headerParams, formParams, fileParams, authSettings);

            if (((int)response.StatusCode) >= 400)
            {
                throw new ApiException((int)response.StatusCode, "Error calling AddOrder: " + response.Content, response.Content);
            }
            else if (((int)response.StatusCode) == 0)
            {
                throw new ApiException((int)response.StatusCode, "Error calling AddOrder: " + response.ErrorMessage, response.ErrorMessage);
            }

            return;
        }
Esempio n. 11
0
        public void ShouldBeAbleToAddNewOrder()
        {
            // arrange
            var mock = new MockRepository();
            var repository = mock.DynamicMock<IOrderRepository>();
            const string IdentityToken = "*****@*****.**";
            const string RetailerUrl = "amazon.com";
            Expect.Call(repository.AddOrder(IdentityToken, new Order { Retailer = new Retailer(RetailerUrl) }))
                .Return(new Order(OrderStatus.New) { Retailer = new Retailer(RetailerUrl), CreatedDate = DateTime.UtcNow });
            var service = new OrderService(repository, new FakeEmailService(), this.logger);
            var request = new AddOrderRequest
                {
                    IdentityToken = IdentityToken,
                    RetailerUrl = RetailerUrl,
                    CreatedDate = DateTime.UtcNow
                };

            // act
            mock.ReplayAll();
            var actual = service.AddOrder(request);
            mock.VerifyAll();

            // assert
            Assert.That(actual, Is.Not.Null);
            Assert.That(actual.CreatedDate, Is.EqualTo(request.CreatedDate).Within(1).Minutes);
            Assert.That(actual.RetailerUrl, Is.EqualTo(request.RetailerUrl));
        }
Esempio n. 12
0
        public async Task AddOrderAsync(AddOrderRequest request)
        {
            var user = userRepository.GetById(request.UserId);

            if (user == null)
            {
                throw new Exception(ErrorMessage.UserNotFound);
            }

            var productsList = productRepository.GetProducts(request.Products.Select(p => p.ProductId));

            if (productsList == null ||
                productsList.Count() == 0 ||
                request.Products.Any(p => !productsList.Any(pl => pl.Id == p.ProductId)))
            {
                throw new Exception(ErrorMessage.ProductsNotFound);
            }

            var order = mapper.Map <Order>(request);

            order.CreationDate = DateTime.Now;

            foreach (var product in order.Products)
            {
                var actualProduct = productsList.First(p => p.Id == product.ProductId);
                product.UnityPrice = actualProduct.Price;
            }

            await orderRepository.AddAsync(order);
        }
        public AddOrderResponse AddOrder(int id, AddOrderRequest request)
        {
            var exists = _orderDbContext.Customers.Any(c => c.IdClient.Equals(id));

            if (!exists)
            {
                return(null);
            }

            // taking random employee to perform the order
            Random rand  = new Random();
            int    num   = rand.Next(0, _orderDbContext.Employees.Count() - 1);
            var    order = new Order()
            {
                DataAccepted = request.DateAccepted,
                idClient     = id,
                idEmployee   = _orderDbContext.Employees.Skip(num).Take(1).First().idEmployee,
                Notes        = request.Notes
            };

            _orderDbContext.Add(order);
            _orderDbContext.SaveChanges();


            // foreach in request
            var confExists = false;

            foreach (var cnf in request.Confectionery)
            {
                //checking if such product exists
                confExists = _orderDbContext.Confectioneries.Any(c => c.Name.Equals(cnf.Name));
                if (!confExists)
                {
                    return(null);
                }

                var confectioneryId = _orderDbContext.Confectioneries.Where(c => c.Name.Equals(cnf.Name))
                                      .Select(c => c.IdConfectionery).FirstOrDefault();
                var conf_order = new ConfectioneryOrder()
                {
                    IdConfection = confectioneryId,
                    IdOrder      = order.idOrder,
                    Notes        = cnf.Notes,
                    Quantity     = cnf.Quantity
                };
                _orderDbContext.Add(conf_order);
                _orderDbContext.SaveChanges();
            }


            return(new AddOrderResponse
            {
                IdOrder = order.idOrder,
                Confectionery = request.Confectionery
            });
        }
Esempio n. 14
0
        public async Task <AddOrderResponse> AddOrderDb(AddOrderRequest request)
        {
            var orderId = await _repository.AddOrderAsync(request);

            if (orderId > 0)
            {
                return(new AddOrderResponse(true, orderId));
            }
            return(new AddOrderResponse(false, 0));
        }
Esempio n. 15
0
        public async Task <long> AddNewOrderAsync(AddOrderRequest addOrderRequest)
        {
            string getOrdersCacheKey = $"{nameof(GetOrdersAsync)}_{addOrderRequest.CustomerId}";

            memoryCache.Remove(getOrdersCacheKey);  //we remove the cache after we add a new order
            //the above logic is simplified to the case which is used currently by benchmark.
            //In real life we should remove all possible keys created for the customer and variations of parameters passed in the Get endpoint

            return(await this.orderDao.AddNewOrderAsync(addOrderRequest));
        }
Esempio n. 16
0
        public async Task <IActionResult> Post([FromBody] AddOrderRequest request)
        {
            var response = await _addOrder.AddOrderDb(request);

            if (!response.Success)
            {
                return(BadRequest());
            }
            return(Ok(response));
        }
Esempio n. 17
0
        public AddOrderResponse AddOrder(AddOrderRequest request, int idCustomer)
        {
            if (String.IsNullOrEmpty(idCustomer.ToString()))
            {
                throw new Exception("you have to provide the id of a customer");
            }
            var customer = _context.Customer.FirstOrDefault(c => c.IdCustomer == idCustomer);

            if (customer == null)
            {
                throw new Exception("there is no such customer");
            }
            for (int i = 0; i < request.Confectionery.Count; i++)
            {
                var confect = _context.Confectionery.FirstOrDefault(c => c.Name.Equals(request.Confectionery.ElementAt(i).Name));
                if (confect == null)
                {
                    throw new Exception("there is no such confectionery");
                }
            }
            Random rand = new Random();

            var order = new Order()
            {
                //  IdOrder = _context.Order.Max(o=>o.IdOrder) +1,
                DateAccepted = request.DateAccepted,
                DateFinished = request.DateAccepted.AddDays(3),
                Notes        = request.Notes,
                IdCustomer   = idCustomer,
                IdEmployee   = rand.Next(1, 3)
            };

            for (int i = 0; i < request.Confectionery.Count; i++)
            {
                var confectionery_order = new Confectionery_Order()
                {
                    // IdOrder = _context.Order.Max(o => o.IdOrder) + 1,
                    IdConfectionery = _context.Confectionery.FirstOrDefault(c => c.Name.Equals(request.Confectionery.ElementAt(i).Name)).IdConfectionery,
                    Quantity        = request.Confectionery.ElementAt(i).Quantity,
                    Notes           = request.Confectionery.ElementAt(i).Notes
                };
                _context.Confectionery_Order.Add(confectionery_order);
            }
            _context.Order.Add(order);
            // _context.SaveChanges();
            var response = new AddOrderResponse()
            {
                Notes        = order.Notes,
                DateFinished = order.DateFinished,
                Surname      = customer.Surname,
                IdEmployee   = order.IdEmployee
            };

            return(response);
        }
        public Task <AddOrderResponse> AddOrderAsync(AddOrderRequest addOrderRequest)
        {
            var request = new PrintAuraRestRequest
            {
                Method = Method.POST
            };

            request.AddJsonBody(addOrderRequest);

            return(ExecuteAsync <AddOrderResponse>(request));
        }
        public AddOrderResponse AddOrder(AddOrderRequest addOrderRequest)
        {
            var request = new PrintAuraRestRequest
            {
                Method = Method.POST
            };

            request.AddJsonBody(addOrderRequest);

            return(Execute <AddOrderResponse>(request));
        }
Esempio n. 20
0
        public IActionResult AddOrders(AddOrderRequest request)
        {
            int    id     = Convert.ToInt32(Request.Path.ToUriComponent().Split("/").GetValue(3));
            string result = _service.AddOrders(id, request);

            if (result == null)
            {
                return(BadRequest("404 Bad Request!"));
            }
            return(Ok(result));
        }
Esempio n. 21
0
        public AddOrderResponse AddOrder(int IdClient, AddOrderRequest request)
        {
            AddOrderResponse response = new AddOrderResponse()
            {
                ConfenctioneryIdList = new List <int>()
            };



            int UserIdCounter = context.Customer.Where(c => c.IdClient == IdClient).Count();

            if (UserIdCounter != 1)
            {
                throw new NoSuchCustomerException("Customer with such id was not found!");
            }
            foreach (AddConfectioneryRequest item in request.Confectionery)
            {
                if (context.Confectionery.Select(co => co.Name).Where(n => n == item.Name).Count() != 1)
                {
                    throw new NoSuchConfectioneryException("Confectionary with such name was not found!");
                }
            }

            using (var trans = context.Database.BeginTransaction())
            {
                Order order = new Order()
                {
                    DateAccepted = request.DateAccepted,
                    Notes        = request.Notes,
                    IdClient     = IdClient,
                    IdEmployee   = request.IdEmployee
                };

                context.Add <Order>(order);
                context.SaveChanges();
                response.IdOrder = order.IdOrder;

                foreach (AddConfectioneryRequest item in request.Confectionery)
                {
                    int id = context.Confectionery.Where(co => co.Name == item.Name).Select(co => co.IdConfectionery).FirstOrDefault();
                    response.ConfenctioneryIdList.Add(id);
                    context.Add <Confectionery_Order>(new Confectionery_Order()
                    {
                        IdConfectionery = id,
                        IdOrder         = order.IdOrder,
                        Quantity        = item.Quantity,
                        Notes           = item.Notes
                    });
                }
                context.SaveChanges();
                trans.Commit();
            }
            return(response);
        }
        private bool DoctorNotFound(AddOrderRequest request, ref PdrValidationResult result)
        {
            if (!_context.Doctor.Any(x => x.Id == request.DoctorId))
            {
                result.PassedValidation = false;
                result.Errors.Add("A doctor with that ID could not be found");
                return(true);
            }

            return(false);
        }
Esempio n. 23
0
        public OrdersResponse addOrder(int idCustomer, AddOrderRequest req)
        {
            if (!context.Customers.Any(c => c.IdCustomer == idCustomer))
            {
                return new OrdersResponse
                       {
                           orders = null,
                           Error  = "No customer with such id"
                       }
            }
            ;
            foreach (ConfectioneryDTO con in req.Confectionery)
            {
                if (!context.Confectioneries.Any(c => c.Name == con.Name))
                {
                    return new OrdersResponse
                           {
                               orders = null,
                               Error  = "no such confectionery as " + con.Name
                           }
                }
                ;
            }


            Order newOrder = new Order
            {
                DateAccepted = req.DateAccepted,
                DateFinished = DateTime.Now,
                Notes        = req.Notes,
                IdEmployee   = 1,
                IdCustomer   = idCustomer
            };

            context.Add <Order>(newOrder);
            context.SaveChanges();

            foreach (ConfectioneryDTO con in req.Confectionery)
            {
                Confectionery_Order newC_Order = new Confectionery_Order
                {
                    IdOrder         = context.Orders.Max(o => o.IdOrder),
                    IdConfectionery = context.Confectioneries.Where(c => c.Name == con.Name).First().IdConfectionery,
                    Quantity        = con.Quantity,
                    Notes           = con.Notes
                };
                context.Add <Confectionery_Order>(newC_Order);
                context.SaveChanges();
            }

            return(getOrders(null));
        }
    }
}
Esempio n. 24
0
 public IActionResult AddOrder(AddOrderRequest request, int idCustomer)
 {
     try
     {
         var order = _service.AddOrder(request, idCustomer);
         return(Created("AddOrder", order));
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }
Esempio n. 25
0
        public void AddOrder(AddOrderRequest request)
        {
            var customer = _customerManager.Get(request.CustomerIdentityTag);

            if (customer is null)
            {
                customer = new Entities.Customer
                {
                    IdentityTag       = request.CustomerIdentityTag,
                    Email             = request.CustomerEmail,
                    Phone             = request.CustomerPhone,
                    FirstName         = request.CustomerFirstname,
                    LastName          = request.CustomerLastname,
                    Updated           = DateTime.Now,
                    CommunicationType = SystemDefaults.DefaultCommunicationType
                };

                _customerManager.Create(customer);
            }

            var order = new Order
            {
                Created     = _timeManager.Parse(request.CreationDate, SystemDefaults.DefaultFormat),
                Customer    = customer,
                TotalAmount = request.TotalPrice,
                Catering    = _cateringManager.Get(request.CateringId) ?? throw new AppException($"Caterign with '{request.CateringId}' doesn't exists")
            };

            var orderItems = new List <OrderItem>();

            foreach (var item in request.AddOrderRequestItems)
            {
                ItemCategory category;
                if ((category = _orderManager.GetCategory(item.CategoryId)) == null)
                {
                    throw new AppException($"Category with '{item.CategoryId}' doesn't exists");
                }

                var t = new OrderItem
                {
                    ItemName     = item.Name,
                    Price        = item.Price,
                    Order        = order,
                    ItemCategory = category
                };

                orderItems.Add(t);
            }

            order.Items = orderItems;

            _orderManager.Create(order);
        }
Esempio n. 26
0
        public async Task <ActionResult> Post(AddOrderRequest order)
        {
            await mediator.Send(new MakeOrderCommand { OrderItems = order.OrderItems.Select(ToOrderItem).ToList() });

            return(Ok());

            MakeOrderCommand.AddOrderItemModel ToOrderItem(AddOrderItemContract source) => new MakeOrderCommand.AddOrderItemModel
            {
                Count       = source.Count,
                Description = source.Description
            };
        }
        public IActionResult AddZamowienie(int id, AddOrderRequest req)
        {
            return(Ok(_service.AddZamowienie(req, id)));

            try
            {
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Esempio n. 28
0
        public async Task <IActionResult> CreateAsync([FromBody] AddOrderRequest request)
        {
            try
            {
                await orderService.AddOrderAsync(request);
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }

            return(Ok());
        }
Esempio n. 29
0
        public IActionResult addOrder(int idCustomer, AddOrderRequest req)
        {
            var res = _service.addOrder(idCustomer, req);

            if (res.orders != null)
            {
                return(Ok(res.orders));
            }
            else
            {
                return(BadRequest(res.Error));
            }
        }
Esempio n. 30
0
        public IActionResult AddOrder(int id, AddOrderRequest request)
        {
            var res = _service.AddOrder(id, request);

            if (res == null)
            {
                return(BadRequest("Nie ma takiego wyrobu"));
            }
            else
            {
                return(Ok(res));
            }
        }
Esempio n. 31
0
        public IActionResult AddOrder(int id, AddOrderRequest request)
        {
            var res = _orderServiceDb.AddOrder(id, request);

            if (res == null)
            {
                return(BadRequest("Such customer or product does not exists"));
            }
            else
            {
                return(Ok(res));
            }
        }
        public IHttpActionResult AddOrder(AddOrderRequest addOrderRequest)
        {
            try
            {
                if (addOrderRequest == null)
                {
                    return ResponseMessage(new HttpResponseMessage() { StatusCode = HttpStatusCode.BadRequest });
                }

                var addOrderResponse = _OrderService.AddOrder(addOrderRequest);

                if (addOrderResponse.ValidationResults.Any())
                {
                    return ResponseMessage(new HttpResponseMessage() { StatusCode = HttpStatusCode.InternalServerError, Content = new StringContent(JsonConvert.SerializeObject(string.Join(",", addOrderResponse.ValidationResults))) });
                }

                return Ok<AddOrderResponse>(addOrderResponse);
            }
            catch (Exception ex)
            {
                _logRepository.Log(ex);
                return InternalServerError();
            }
        }
Esempio n. 33
0
        /// <summary>
        /// Add new order.
        /// </summary>
        /// <param name="request">
        /// The add new order request.
        /// </param>
        /// <returns>
        /// The add order response.
        /// </returns>
        public AddOrderResponse AddOrder(AddOrderRequest request)
        {
            var retailer = new Retailer(request.RetailerUrl);
            var newOrder = new Order(OrderStatus.New) { CreatedDate = DateTime.UtcNow, Retailer = retailer };
            var response = new AddOrderResponse { BrokenRules = retailer.GetBrokenRules().ToList() };
            response.BrokenRules.AddRange(newOrder.GetBrokenRules().ToList());
            if (response.BrokenRules.Any())
            {
                response.MessageType = MessageType.Warning;
                return response;
            }

            try
            {
                var orderResult = this.orderRepository.AddOrder(request.IdentityToken, newOrder);
               
                response = orderResult.ConvertToAddOrderResponse();
                response.Message = CommonResources.OrderAddSuccessMessage;
            }
            catch (Exception ex)
            {
                response.MessageType = MessageType.Error;
                response.ErrorCode = ex.Message;
                this.Logger.Error(CommonResources.OrderAddErrorMessage, ex);
            }

            return response;
        }
Esempio n. 34
0
        public ActionResult Add([Bind]string retailerUrl, string userEmail)
        {
            this.EnsureUserEmailIsNotChanged(userEmail);
            var result = new OrderViewModel { Status = "New", RetailerUrl = retailerUrl };
            var validator = new OrderViewModelValidator();
            var validationResult = validator.Validate(result);
            if (validationResult.IsValid)
            {
                var request = new AddOrderRequest
                {
                    RetailerUrl = retailerUrl,
                    CreatedDate = DateTime.UtcNow,
                    IdentityToken = userEmail,
                    CreatedByOperator = !userEmail.Equals(FormsAuthentication.GetAuthenticationToken())
                };
                var response = this.orderService.AddOrder(request);
                result = response.ConverToOrderViewModel();
            }
            else
            {
                result.MessageType = MessageType.Warning.ToString();
                result.BrokenRules = new List<BusinessRule>();
                foreach (var failure in validationResult.Errors)
                {
                    result.BrokenRules.Add(new BusinessRule(failure.PropertyName, failure.ErrorMessage));
                }
            }

            var jsonNetResult = new JsonNetResult
                {
                    Formatting = (Formatting)Newtonsoft.Json.Formatting.Indented,
                    Data = result
                };
            return jsonNetResult;
        }