public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var projectstock = await _context.ProjectStocks.FindAsync(request.ProjectId, request.PartNo);

                if (projectstock == null)
                {
                    projectstock = new ProjectStock
                    {
                        //        Id = request.Id,
                        CreatedAt = DateTime.Now,
                        UpdatedAt = DateTime.Now,
                        ProjectId = request.ProjectId,
                        PartNo    = request.PartNo,
                        Stock     = 0,
                    };

                    if (request.Status == "inbound")
                    {
                        projectstock.Stock += request.Quantity;
                    }
                    else if (request.Status == "outbound")
                    {
                        projectstock.Stock -= request.Quantity;
                    }
                    ;

                    _context.ProjectStocks.Add(projectstock);
                }
                else
                {
                    if (request.Status == "inbound")
                    {
                        projectstock.Stock += request.Quantity;
                    }
                    else if (request.Status == "outbound")
                    {
                        projectstock.Stock -= request.Quantity;
                    }
                    ;
                };

                var warehouselog = new WarehouseLog
                {
                    //        Id = request.Id,
                    CreatedAt  = DateTime.Now,
                    UpdatedAt  = DateTime.Now,
                    ProjectId  = request.ProjectId,
                    OrderNo    = request.OrderNo,
                    PartNo     = request.PartNo,
                    UOM        = request.UOM,
                    Quantity   = request.Quantity,
                    Stock      = projectstock.Stock,
                    Status     = request.Status,
                    PickedBy   = request.PickedBy,
                    AssignedTo = request.AssignedTo,
                    Url        = request.Url,
                    Remark     = request.Remark,
                };

                _context.WarehouseLogs.Add(warehouselog);
                var success = await _context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }

                throw new Exception("Problem saving changes");
            }
Esempio n. 2
0
        public void Create()
        {
            Employee employee = _context.Employee.First(x => x.ID == _user.Id);
            DateTime lastDate = _context.WarehouseLog.Where(x => x.BranchID == employee.BranchID)
                                .OrderByDescending(x => x.Date)
                                .Select(x => x.Date)
                                .FirstOrDefault();

            bool exist = false;

            if (lastDate != null)
            {
                exist = true;
            }
            if (lastDate.Date == DateTime.Today.Date)
            {
                throw new Exception("Limit");
            }
            var listItemSize = _context.ItemSize.ToList();

            foreach (var item in listItemSize)
            {
                int currentBalance = _context.Inventory.Where(x => x.ItemSizeID == item.ID && x.BranchID == employee.BranchID)
                                     .Select(x => x.Quantity).FirstOrDefault();
                int income = 0;
                int sold   = 0;
                int sold2  = 0;
                if (!exist)
                {
                    income = _context.Purchase.Where(x => x.ItemSizeID == item.ID &&
                                                     x.BranchID == employee.BranchID)
                             .Select(x => x.Quantity).Sum();
                    sold  = 0;
                    sold2 = _context.Order
                            .Include(x => x.ShoppingCart)
                            .Where(x => x.ItemSizeID == item.ID && x.ShoppingCart.BranchID == employee.BranchID)
                            .Select(x => x.Quantity).Sum();
                }
                else
                {
                    income = _context.Purchase.Where(x => x.ItemSizeID == item.ID &&
                                                     x.BranchID == employee.BranchID && x.Date > lastDate)
                             .Select(x => x.Quantity).Sum();
                    sold  = 0;
                    sold2 = _context.Order
                            .Include(x => x.ShoppingCart)
                            .Where(x => x.ItemSizeID == item.ID && x.ShoppingCart.BranchID == employee.BranchID &&
                                   x.Date > lastDate)
                            .Select(x => x.Quantity).Sum();
                }

                var previous = _context.Warehouse.Where(x => x.ItemSizeID == item.ID && x.BranchID == employee.BranchID)
                               .OrderBy(x => x.Date).FirstOrDefault();
                int previousBalance = 0;
                if (previous != null)
                {
                    previousBalance = _context.Warehouse
                                      .Where(x => x.ItemSizeID == item.ID && x.BranchID == employee.BranchID)
                                      .OrderByDescending(x => x.Date).Select(x => x.CurrentBalance).FirstOrDefault();
                }
                Warehouse warehouse = new Warehouse
                {
                    BranchID        = employee.BranchID,
                    CurrentBalance  = currentBalance,
                    Income          = income,
                    Sold            = sold2,
                    ItemSizeID      = item.ID,
                    Date            = DateTime.Now,
                    PreviousBalance = previousBalance
                };
                _context.Warehouse.Add(warehouse);
                _context.SaveChanges();
            }
            WarehouseLog warehouseLog = new WarehouseLog
            {
                BranchID = employee.BranchID,
                Date     = DateTime.Now
            };

            _context.WarehouseLog.Add(warehouseLog);
            _context.SaveChanges();
        }