public CommodityRequestCheckout(List <CheckoutedLineItem> lineItems, CommodityRequestForm requestForm)
 {
     RequestForm = requestForm;
     ValidateLineItems(lineItems);
     LineItems = lineItems;
     _state    = CheckoutState.Pending;
 }
 public CommodityRequestCheckout(Guid id, List <CheckoutedLineItem> lineItems, CommodityRequestForm requestForm,
                                 CheckoutState state)
 {
     Id          = id;
     RequestForm = requestForm;
     ValidateLineItems(lineItems);
     LineItems = lineItems;
     _state    = state;
 }
Example #3
0
        public async Task <Response> CreateForm(int resturantId,
                                                IEnumerable <CommodityRequestFormLineItemViewModel> lineItems)
        {
            var req = new CommodityRequestForm(lineItems.Select(x => new CommodityRequestFormLineItem
            {
                Amount      = x.Amount,
                CommodityId = x.CommodityId
            }).ToList(), resturantId);
            await _commodityRequestFormRepository.AddAsync(req);

            _eventDispatcher.Raise(new NewCommodityRequestFormAddedEvent(req));
            return(Response.Success());
        }
 private void AddNewAddedItemsFromForm(CommodityRequestForm form)
 {
     foreach (var formLineItem in form.LineItems.Where(x => x.Id != Guid.Empty).ToList())
     {
         var item = new CheckoutedLineItem
         {
             RequiredAmount        = formLineItem.Amount,
             FormRequestLineItemId = formLineItem.Id,
             Commodity             = formLineItem.Commodity,
             State = TrackingState.Added
         };
         this.LineItems.Add(item);
     }
 }
Example #5
0
 private void LoadRefrencedCommidities(CommodityRequestForm arg)
 {
     if (arg.LineItems.All(x => x.Commodity == null))
     {
         _commodityRepository.GetListByIds(arg.LineItems.Select(x => x.CommodityId).ToList()).ForEach(x =>
         {
             foreach (var lineItem in arg.LineItems)
             {
                 if (lineItem.CommodityId == x.Id)
                 {
                     lineItem.Commodity = x;
                 }
             }
         });
     }
 }
        public static CommodityRequestCheckout Create(CommodityRequestForm form)
        {
            var lineItems = new List <CheckoutedLineItem>();

            foreach (var requestLineItem in form.LineItems)
            {
                var lineItem = new CheckoutedLineItem()
                {
                    Commodity             = requestLineItem.Commodity,
                    FormRequestLineItemId = requestLineItem.Id,
                    RequiredAmount        = requestLineItem.Amount
                };
                lineItems.Add(lineItem);
            }

            return(new CommodityRequestCheckout(form.Id, lineItems, form, CheckoutState.Pending));
        }
        private void UpdateItemsCreatedFromEntireForm(CommodityRequestForm form)
        {
            var createdFromFormItems = LineItems.Where(x => x.FormRequestLineItemId.HasValue).ToList();

            foreach (var checkoutedLineItem in createdFromFormItems)
            {
                var updated = form.LineItems.FirstOrDefault(x => x.Id == checkoutedLineItem.FormRequestLineItemId);
                if (updated == null)
                {
                    checkoutedLineItem.State = TrackingState.Deleted;
                    continue;
                }
                checkoutedLineItem.Commodity          = updated.Commodity;
                checkoutedLineItem.RequiredAmount     = updated.Amount;
                checkoutedLineItem.FinalPurchaseCount = checkoutedLineItem.CommodityPurchaseBid;
                checkoutedLineItem.State = TrackingState.Edited;
            }
        }
        public Task UpdateAsync(CommodityRequestForm form)
        {
            foreach (var item in form.LineItems)
            {
                switch (item.State)
                {
                case TrackingState.Added:
                    DbContext.Entry(item).State = EntityState.Added;
                    break;

                case TrackingState.Edited:
                    DbContext.Entry(item).State = EntityState.Modified;
                    break;

                case TrackingState.Deleted:
                    DbContext.Entry(item).State = EntityState.Deleted;
                    break;
                }
            }

            DbContext.Entry(form).State = EntityState.Modified;
            return(DbContext.SaveChangesAsync());
        }
        public async Task AddAsync(CommodityRequestForm model)
        {
            await DbContext.CommodityRequestForms.AddAsync(model);

            await DbContext.SaveChangesAsync();
        }
 public CommodityEditedFormEvent(CommodityRequestForm form)
 {
     Form = form;
 }
 public NewCommodityRequestFormAddedEvent(CommodityRequestForm req)
 {
     Form = req;
 }
 public void UpdateItemsByForm(CommodityRequestForm form)
 {
     UpdateItemsCreatedFromEntireForm(form);
     AddNewAddedItemsFromForm(form);
     HandleFinalPurchaseCount();
 }