public DeliveryViewModel CreateDelivery(int deliveryId, string recepient, string item)
        {
            if (recepient == null)
            {
                throw new ArgumentNullException(nameof(recepient), "Recepient is null");
            }

            var user = GetUser(recepient);

            if (user == null)
            {
                throw new InvalidOperationException("User cannot be found");
            }

            if (item == null)
            {
                throw new ArgumentNullException(nameof(item), "Item is null");
            }

            var newDelivery = new DeliveryViewModel
            {
                DeliveryId   = deliveryId,
                Recepient    = recepient,
                DeliveryItem = item,
                Status       = (int)DeliveryStatus.InProgress,
                SentDate     = DateTime.Now
            };

            return(_deliveryRepository.Create(newDelivery.ToDelivery()).ToDeliveryViewModel());
        }
        public Bill InitializeBill(DeliveryOrderCreateModel deliveryOrderCreateDto, string initiatorName)
        {
            User addressee = _userRepository.FindByEmail(deliveryOrderCreateDto.AddresseeEmail);

            if (addressee == null)
            {
                throw new NoSuchUserException();
            }
            Way way = _wayRepository.FindByLocalitySand_IdAndLocalityGet_Id(deliveryOrderCreateDto.LocalitySandId
                                                                            , deliveryOrderCreateDto.LocalityGetId);

            if (way == null)
            {
                throw new NoSuchWayException();
            }
            Delivery newDelivery = getBuildDelivery(deliveryOrderCreateDto, addressee, way);

            _deliveryRepository.Create(newDelivery);
            User user = _userRepository.FindByName(initiatorName);

            if (user == null)
            {
                throw new NoSuchUserException();
            }
            Bill buildBill = getBuildBill(newDelivery
                                          , calculateDeliveryCost(deliveryOrderCreateDto.DeliveryWeight, way)
                                          , user);

            _billRepository.Create(
                buildBill);
            _billRepository.Save();
            return(buildBill);
        }
Beispiel #3
0
        public async Task <EntityValidationResult <Delivery> > SendJob(Delivery data)
        {
            try
            {
                var result           = new EntityValidationResult <Delivery>();
                var validationResult = _validator.Validate(data);

                result.IsValid = validationResult.IsValid;
                result.Object  = data;

                if (validationResult.IsValid)
                {
                    data.Id = Guid.NewGuid();

                    _deliveryRepository.Create(data);
                    await _deliveryRepository.SaveAsync();
                }
                else
                {
                    result.Errors = validationResult.Errors.Select(x => new EntityValidationFailure {
                        PropertyName = x.PropertyName, ErrorMessage = x.ErrorMessage
                    }).ToList();
                }

                return(result);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private Response CreateDelivery(dynamic args)
        {
            int?           lifetime    = args.lifetime;
            DeliveryObject newDelivery = _repository.Create(args.title, _systemClock.Now, lifetime.HasValue ? TimeSpan.FromSeconds(lifetime.Value) : TimeSpan.FromDays(1));

            return(Response.AsJson(newDelivery)
                   .WithContentType("application/json")
                   .WithStatusCode(HttpStatusCode.Created));
        }
Beispiel #5
0
        public IActionResult DeliveryConfirm()
        {
            string directory = Directory.GetCurrentDirectory() + "\\tempFiles\\";
            DataContractJsonSerializer jsonFormatter = new DataContractJsonSerializer(typeof(Delivery));

            Delivery delivery = null;

            using (FileStream fs = new FileStream(directory + "Delivery.json", FileMode.Open))
            {
                delivery = (Delivery)jsonFormatter.ReadObject(fs);
            }

            System.IO.File.Delete(directory + "Delivery.json");

            _deliveryRepository.Create(delivery);
            return(View(delivery));
        }
        public async Task <DeliveryDto> Create(IExecutionContext executionContext, DeliveryDto entity)
        {
            AssertExecutionContext(executionContext);

            if (entity == null)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            if (executionContext.UserRole != Role.User)
            {
                throw new UnauthorizedException("Only user can create delivery");
            }

            var created = await _deliveryRepo.Create(_deliveryMapper.To(entity));

            return(_deliveryMapper.From(created));
        }
 public IActionResult Create([Bind("DeliveryId,CheckId,Address,ShippingDate,DeliveryDate,DeliveryPrice")] Delivery delivery)
 {
     if (ModelState.IsValid)
     {
         if (delivery.ShippingDate > delivery.DeliveryDate)
         {
             this.ModelState["DeliveryDate"].Errors.Clear();
             this.ModelState["DeliveryDate"].Errors.Add("Дата доставки не може бути раніше, ніж дата відправлення!");
             this.ModelState["ShippingDate"].Errors.Clear();
             this.ModelState["ShippingDate"].Errors.Add("Дата відправлення не може бути пізніше, ніж дата доставки!");
             ViewData["CheckId"] = new SelectList(_furnituresalerepository.GetAll(), "CheckId", "CheckId", delivery.CheckId);
             return(View(delivery));
         }
         _deliveryrepository.Create(delivery);
         return(RedirectToAction(nameof(Index)));
     }
     ViewData["CheckId"] = new SelectList(_furnituresalerepository.GetFurnitureSalesInfo(), "CheckId", "CheckId", delivery.CheckId);
     return(View(delivery));
 }
Beispiel #8
0
        public Delivery Create(Guid id, Guid customerId, string fao)
        {
            if (!CurrentUser.HasRole(UserRole.Member))
            {
                throw new DomainValidationException(Messages.InsufficientSecurityClearance, "CurrentUser");
            }
            if (id == Guid.Empty)
            {
                throw new ArgumentException("An ID must be supplied for the pending item.");
            }
            var delivery = new Delivery();

            delivery.Id = id;
            delivery.DeliveryNoteNumber = _entityIdProvider.GetIdFor <Delivery>();
            delivery.Customer           = GetCustomer(customerId);
            delivery.CreatedBy          = CurrentUser;
            delivery.DateCreated        = AppDateTime.GetUtcNow();
            delivery.Fao = fao;
            ValidateAnnotatedObjectThrowOnFailure(delivery);
            _deliveryRepository.Create(delivery);
            return(delivery);
        }
Beispiel #9
0
 public Delivery Create([FromBody] Delivery delivery)
 {
     Repo.Create(delivery);
     return(delivery);
 }
 public async Task Execute(IJobExecutionContext context)
 {
     _repository.Create("Test delivery", DateTime.Now, TimeSpan.FromDays(1));
 }
Beispiel #11
0
        //[Authorize(Policy = PermissionsList.PermissionsOrderAdd)]
        public async Task <IActionResult> AddOrder([FromBody] OrderModel order)
        {
            var         dishNames = order.Dishes.Select(d => d.Name).ToList();
            List <Dish> dishes    = (List <Dish>) await _orderRepository.GetDishList(dishNames);

            bool isPaid = false;

            if (dishes.Count == 0 ||
                User.Identity.Name != null ||
                !ModelState.IsValid)
            {
                return(BadRequest());
            }

            Guid orderId = Guid.NewGuid();

            decimal          totalPrice  = 0;
            var              lineItems   = new List <lineItemType>();
            List <OrderDish> orderDishes = new List <OrderDish>();

            var  userId    = User.Claims.Where(c => c.Type == ClaimTypes.NameIdentifier).FirstOrDefault();
            User orderUser = await _userRepository.GetUserById(userId.Value);

            Order newOrder = new Order()
            {
                Id                  = orderId,
                User                = orderUser,
                OrderTime           = DateTime.Now,
                OrderExpirationTime = DateTime.Now.AddHours(1),
                IsForDelivery       = order.IsForDelivery,
                IsCancelled         = false,
                IsClosed            = false
            };


            dishes.ForEach(dish =>
            {
                var quantity = order.Dishes.Where(d => d.Name == dish.Name).FirstOrDefault().Quantity;
                lineItems.Add(new lineItemType
                {
                    itemId    = dish.Id.ToString(),
                    name      = dish.Name,
                    quantity  = quantity,
                    unitPrice = (decimal)dish.DishPrice
                });

                orderDishes.Add(new OrderDish
                {
                    Id       = Guid.NewGuid(),
                    Dish     = dish,
                    Order    = newOrder,
                    Quantity = quantity
                });

                totalPrice += (decimal)dish.DishPrice * quantity;
            });

            newOrder.TotalPrice = (float)totalPrice;
            newOrder.OrderItems = orderDishes;

            switch (order.PaymentType)
            {
            case PaymentTypes.CreditCard:
            {
                var creditCard = new creditCardType
                {
                    cardNumber     = order.CreditCard.CardNumber,
                    expirationDate = order.CreditCard.ExpirationDate,
                    cardCode       = order.CreditCard.CCV
                };

                var billingAddress = new customerAddressType
                {
                    firstName = order.BillingAddressModel.FirstName,
                    lastName  = order.BillingAddressModel.LastName,
                    address   = order.BillingAddressModel.Address,
                    city      = order.BillingAddressModel.City,
                    zip       = order.BillingAddressModel.ZIP
                };

                var response = ChargeCreditCard.Run(creditCard, billingAddress, lineItems, totalPrice);
                if (response.messages.resultCode != messageTypeEnum.Ok)
                {
                    return(BadRequest(new { error = "Couldn't process transaction" }));
                }
                else
                {
                    isPaid = true;
                }
                break;
            }

            case PaymentTypes.Cash:
            {
                break;
            }
            }

            newOrder.IsPaid = isPaid;

            _orderRepository.Create(newOrder);

            if (order.IsForDelivery)
            {
                Address address = await _addressRepository.GetById(order.DeliveryAddress.Id);

                if (address == null)
                {
                    address = new Address()
                    {
                        Id      = Guid.NewGuid(),
                        Name    = order.DeliveryAddress.Name,
                        City    = await _cityRepository.GetById(order.DeliveryAddress.City.Id),
                        Country = await _countryRepository.GetById(order.DeliveryAddress.Country.Id),
                        Street  = order.DeliveryAddress.Street
                    };

                    _addressRepository.Create(address);
                }

                Delivery delivery = new Delivery()
                {
                    Id = Guid.NewGuid(),
                    DeliveryAddress = address,
                    Order           = newOrder,
                    IsDelivered     = false
                };

                _deliveryRepository.Create(delivery);
            }

            return(Ok(new { order_id = orderId }));
        }