コード例 #1
0
        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
            });
        }
コード例 #2
0
 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;
     }
 }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        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;
            }
        }