public MilkUtilizeResultModel Compute(MilkUtilizeComputeModel model) { var totalMilkWitdrawn = model.RawMilkProcess + model.TotalMilkSold; var endingBalance = model.TotalMilkForUtilization - totalMilkWitdrawn - model.Spillage - model.Analysis; return(new MilkUtilizeResultModel { EndingBalance = endingBalance, TotalRawMilkWithdrawn = totalMilkWitdrawn }); }
private void Compute() { try { var model = new MilkUtilizeComputeModel(); model.TotalMilkForUtilization = LocalUtils.ConvertToDouble(txtTotalMilkForUtilization.Text); model.TotalMilkSold = LocalUtils.ConvertToDouble(txtTotalRawMilkSold.Text); model.RawMilkProcess = LocalUtils.ConvertToDouble(txtRawMilkProcess.Text); model.Spillage = LocalUtils.ConvertToDouble(txtSpillage.Text); model.Analysis = LocalUtils.ConvertToDouble(txtAnalysis.Text); var result = Factories.CreateMilkUtilize().Compute(model); // Get the result txtTotalRawMilkWithdrawn.Text = result.TotalRawMilkWithdrawn.ToString(); txtEndingBalance.Text = result.EndingBalance.ToString(); } catch (Exception) { throw; } }
public IEnumerable <MilkUtilizeComputeModel> GetComputedList2() { try { using (var uow = new UnitOfWork(new DataContext())) { //Get Beginning Volume of records double beginningBalance = 0.0; double totalMilkForUtilization = 0.0; double rawMilkProcessed = 0.0; double totalRawMilkWithdrawn = 0.0; double spillage = 0.0; double analysis = 0.0; double endingBalance = 0.0; /**Get all milk collections, checks for milk utilization for particalar milk collection date * compute for beginning and endings */ var milkCollections = uow.MilkCollections.GetAllRecords() .OrderBy(x => x.ActualDate) .GroupBy(x => x.ActualDate) .Select(x => new { TotalMilkCollectionPerDay = x.Sum(y => y.Volume), ActualDate = x.First().ActualDate }).ToList(); var computeList = new List <MilkUtilizeComputeModel>(); foreach (var milkCollection in milkCollections) { var loopDate = milkCollection.ActualDate; double totalMilkSold = 0.0; double milkDelivered = 0.0; // previous ending balance = beginning balance; beginningBalance = endingBalance; milkDelivered = milkCollection.TotalMilkCollectionPerDay; //get total milk collections by current loop date totalMilkForUtilization = beginningBalance + milkCollection.TotalMilkCollectionPerDay; // get total sold from customers //var actualDailySales = uow.DailySaleRecords.GetAllBy(loopDate) // .GroupBy(x => x.CreateDateTime) // .Select(x => new {TotalRawMilkSold = x.Sum(y => y.}; var milkDeliveryAndUtilization = uow.MilkUtilizeRecords.GetAllBy(loopDate) .GroupBy(x => x.ActualDate) .Select(x => new { TotalRawMilkProcess = x.Sum(y => y.RawMilkProcess), TotalSpillage = x.Sum(y => y.Spillage), TotalAnalysis = x.Sum(y => y.Analysis) }).FirstOrDefault(); if (milkDeliveryAndUtilization != null) { rawMilkProcessed = milkDeliveryAndUtilization.TotalRawMilkProcess; spillage = milkDeliveryAndUtilization.TotalSpillage; analysis = milkDeliveryAndUtilization.TotalAnalysis; } // compute for ending balance totalRawMilkWithdrawn = totalMilkSold + rawMilkProcessed; endingBalance = totalMilkForUtilization - totalRawMilkWithdrawn - spillage - analysis; var compute = new MilkUtilizeComputeModel(); compute.ActualDate = milkCollection.ActualDate; compute.Analysis = analysis; compute.RawMilkProcess = rawMilkProcessed; compute.TotalMilkSold = totalMilkSold; compute.Spillage = spillage; compute.TotalMilkForUtilization = totalMilkForUtilization; compute.BeginningVolumeBalance = beginningBalance; compute.EndingVolumeBalance = endingBalance; compute.MilkDeliveredByFarmers = milkDelivered; compute.TotalMilkWithdrawn = totalRawMilkWithdrawn; computeList.Add(compute); } return(computeList); } } catch (Exception) { throw; } }
private IEnumerable <MilkUtilizeComputeModel> GetComputedList() { try { using (var uow = new UnitOfWork(new DataContext())) { //Get Beginning Volume of records double beginningBalance = 0.0; double totalMilkForUtilization = 0.0; double rawMilkProcess = 0.0; double totalRawMilkWithdrawn = 0.0; double spillage = 0.0; double analysis = 0.0; double endingBalance = 0.0; //Compute for beginning and ending results of every record var objs = uow.MilkUtilizeRecords.GetAllRecords(); var computeList = new List <MilkUtilizeComputeModel>(); foreach (var item in objs) { double totalMilkSoldToCustomers = 0.0; double totalMilkDelivered = 0.0; // previous ending balance = beginning balance; beginningBalance = endingBalance; //Get Total Milk Collections on current loop date totalMilkDelivered = uow.MilkCollections.GetAllBy(item.ActualDate).Sum(x => x.Volume); totalMilkForUtilization = beginningBalance + totalMilkDelivered; //Get Total Milk Sold for the current loop date totalMilkSoldToCustomers = uow.ProductSales.GetAllBy(item.ActualDate, "Raw Milk").Sum(x => x.Quantity); //Get Total Raw Milk Process from Production per day rawMilkProcess = uow.Productions.GetProducts(item.ActualDate, isProduce: true) .Select(x => new { rawMilkProcess = x.Product.ProductRawMaterials.Where(n => n.SupplyType.SupplyClass.Description == "Raw Milk") .Sum(y => y.Quantity * x.Quantity) }).Sum(b => b.rawMilkProcess); totalRawMilkWithdrawn = totalMilkSoldToCustomers + rawMilkProcess; spillage = item.Spillage; analysis = item.Analysis; // compute for ending balance endingBalance = totalMilkForUtilization - totalRawMilkWithdrawn - spillage - analysis; var compute = new MilkUtilizeComputeModel(); compute.ID = item.MilkUtilizeRecordID; compute.ActualDate = item.ActualDate; compute.Analysis = analysis; compute.RawMilkProcess = rawMilkProcess; compute.TotalMilkSold = totalMilkSoldToCustomers; compute.Spillage = spillage; compute.TotalMilkForUtilization = totalMilkForUtilization; compute.BeginningVolumeBalance = beginningBalance; compute.EndingVolumeBalance = endingBalance; compute.MilkDeliveredByFarmers = totalMilkDelivered; compute.TotalMilkWithdrawn = totalRawMilkWithdrawn; compute.Demo = item.Demo; compute.SpoilageQty = item.SpoilageQty; compute.SpoilageValue = item.SpoilageValue; compute.WithdrawnByProcessor = item.WithdrawnByProcessor; compute.Remarks = item.Remarks; computeList.Add(compute); } return(computeList); } } catch (Exception) { throw; } }