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"); }
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(); }