Exemplo n.º 1
0
 /// <summary>
 /// Retrieves Get Total Rows of Lookup
 /// </summary>
 /// <returns>Int32 type object</returns>
 public Int32 GetRowCount()
 {
     using (LookupDataAccess data = new LookupDataAccess(ClientContext))
     {
         return(data.GetRowCount());
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// Retrieve list of Lookup  by query String.
 /// <param name="query"></param>
 /// </summary>
 /// <returns>List of Lookup</returns>
 public LookupList GetByQuery(String query)
 {
     using (LookupDataAccess data = new LookupDataAccess(ClientContext))
     {
         return(data.GetByQuery(query));
     }
 }
Exemplo n.º 3
0
 /// <summary>
 /// Retrieve list of Lookup  by PageRequest.
 /// <param name="request"></param>
 /// </summary>
 /// <returns>List of Lookup</returns>
 public LookupList GetPaged(PagedRequest request)
 {
     using (LookupDataAccess data = new LookupDataAccess(ClientContext))
     {
         return(data.GetPaged(request));
     }
 }
Exemplo n.º 4
0
 /// <summary>
 /// Retrieve list of Lookup.
 /// no parameters required to be passed in.
 /// </summary>
 /// <returns>List of Lookup</returns>
 public LookupList GetAll()
 {
     using (LookupDataAccess data = new LookupDataAccess(ClientContext))
     {
         return(data.GetAll());
     }
 }
Exemplo n.º 5
0
 /// <summary>
 /// Retrieve Lookup data using unique ID
 /// </summary>
 /// <param name="_Id"></param>
 /// <returns>Lookup Object</returns>
 public Lookup Get(Int32 _Id)
 {
     using (LookupDataAccess data = new LookupDataAccess(ClientContext))
     {
         return(data.Get(_Id));
     }
 }
Exemplo n.º 6
0
 /// <summary>
 /// Delete operation for Lookup
 /// <param name="_Id"></param>
 /// <returns></returns>
 private bool Delete(Int32 _Id)
 {
     using (LookupDataAccess data = new LookupDataAccess(ClientContext))
     {
         // return if code > 0
         return(data.Delete(_Id) > 0);
     }
 }
Exemplo n.º 7
0
        public AddEditProductModel GetProductForCreate()
        {
            AddEditProductModel product          = new AddEditProductModel();
            LookupDataAccess    lookupDataAccess = new LookupDataAccess();

            product.DonViTinhSource  = lookupDataAccess.GetListLookup("DonViTinh");
            product.KichThuocSource  = lookupDataAccess.GetListLookup("KichThuoc");
            product.LoaiHangSource   = lookupDataAccess.GetListLookup("LoaiHang");
            product.NhaSanXuatSource = lookupDataAccess.GetListLookup("NhaSanXuat");
            return(product);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Retrieve list of Lookup.
        /// </summary>
        /// <param name="fillChild"></param>
        /// <returns>List of Lookup</returns>
        public LookupList GetAll(bool fillChild)
        {
            LookupList lookupList = new LookupList();

            using (LookupDataAccess data = new LookupDataAccess(ClientContext))
            {
                lookupList = data.GetAll();
            }
            if (fillChild)
            {
                foreach (Lookup lookupObject in lookupList)
                {
                    FillLookupWithChilds(lookupObject, fillChild);
                }
            }
            return(lookupList);
        }
Exemplo n.º 9
0
        public async Task <IActionResult> GetLookup([FromHeader(Name = "Grid-General-Token")] string Token, [FromRoute] string lookupType)
        {
            try
            {
                if (string.IsNullOrEmpty(lookupType))
                {
                    return(Ok(new OperationResponse
                    {
                        HasSucceeded = false,
                        Message = StatusMessages.DomainValidationError,
                        IsDomainValidationErrors = true
                    }));
                }
                TokenValidationHelper tokenValidationHelper = new TokenValidationHelper();
                if (!tokenValidationHelper.ValidateGenericToken(Token, _iconfiguration))
                {
                    return(Ok(new OperationResponse
                    {
                        HasSucceeded = false,
                        Message = Core.Extensions.EnumExtensions.GetDescription(DbReturnValue.TokenAuthFailed),
                        IsDomainValidationErrors = true
                    }));
                }
                LookupDataAccess _lookupAccess = new LookupDataAccess(_iconfiguration);

                return(Ok(new ServerResponse
                {
                    HasSucceeded = true,
                    Message = StatusMessages.SuccessMessage,
                    Result = await _lookupAccess.GetLookupList(lookupType)
                }));
            }
            catch (Exception ex)
            {
                LogInfo.Error(new ExceptionHelper().GetLogString(ex, ErrorLevel.Critical));

                return(Ok(new OperationResponse
                {
                    HasSucceeded = false,
                    Message = StatusMessages.ServerError,
                    IsDomainValidationErrors = false
                }));
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// Update base of Lookup Object.
        /// Data manipulation processing for: new, deleted, updated Lookup
        /// </summary>
        /// <param name="lookupObject"></param>
        /// <returns></returns>
        public bool UpdateBase(Lookup lookupObject)
        {
            // use of switch for different types of DML
            switch (lookupObject.RowState)
            {
            // insert new rows
            case BaseBusinessEntity.RowStateEnum.NewRow:
                return(Insert(lookupObject));

            // delete rows
            case BaseBusinessEntity.RowStateEnum.DeletedRow:
                return(Delete(lookupObject.Id));
            }
            // update rows
            using (LookupDataAccess data = new LookupDataAccess(ClientContext))
            {
                return(data.Update(lookupObject) > 0);
            }
        }
Exemplo n.º 11
0
 /// <summary>
 /// Insert new lookup.
 /// data manipulation for insertion of Lookup
 /// </summary>
 /// <param name="lookupObject"></param>
 /// <returns></returns>
 private bool Insert(Lookup lookupObject)
 {
     // new lookup
     using (LookupDataAccess data = new LookupDataAccess(ClientContext))
     {
         // insert to lookupObject
         Int32 _Id = data.Insert(lookupObject);
         // if successful, process
         if (_Id > 0)
         {
             lookupObject.Id = _Id;
             return(true);
         }
         else
         {
             return(false);
         }
     }
 }
Exemplo n.º 12
0
        public static void FillGapsFromMonthlyLimits(List <DemandGapOneRow> gaps,
                                                     List <MonthlyLimitRow> monthlyLimitByCarGroup,
                                                     List <WeeklyLimitRow> weeklyLimitBySegment,
                                                     List <WeeklyAddition> generatedAdditions)
        {
            var gapsFromMonthlyLimits = gaps.Where(d => d.ReasonForGap.StartsWith("M")).ToList();

            if (!gapsFromMonthlyLimits.Any())
            {
                return;
            }

            using (var lookup = new LookupDataAccess())
            {
                foreach (var dgor in gapsFromMonthlyLimits)
                {
                    var carGroupLimited   = dgor.GetCarGroupId();
                    var carSegmentLimited = dgor.GetCarSegmentId();
                    var weekLimitedOn     = dgor.WeekNumber;
                    var monthLimitedOn    = dgor.GetMonth();
                    var yearLimitedOn     = dgor.Year;
                    var locationId        = dgor.GetLocationId();
                    var totalDesired      = Math.Abs(dgor.MissingVehicles);

                    var limitForThisWeek =
                        weeklyLimitBySegment.FirstOrDefault(d => d.GetCarSegmentId() == carSegmentLimited &&
                                                            d.Week == weekLimitedOn &&
                                                            d.Year == yearLimitedOn);

                    if (limitForThisWeek == null)
                    {
                        continue;
                    }
                    //If the limit for this week has already been reached
                    if (limitForThisWeek.AdditionsLimit == limitForThisWeek.Assigned)
                    {
                        continue;
                    }
                    //Reduce the amount needed to match the weekly max
                    if (limitForThisWeek.Assigned + totalDesired > limitForThisWeek.AdditionsLimit)
                    {
                        totalDesired = limitForThisWeek.AdditionsLimit - limitForThisWeek.Assigned;
                    }

                    var replacementCarGroups = lookup.FindCarGroupsInSameCarClass(carGroupLimited);

                    //Total amount tracks the amount to give in case it's spread across several car groups
                    var totalAmountToGive = totalDesired;

                    foreach (var rcg in replacementCarGroups)
                    {
                        if (totalAmountToGive == 0)
                        {
                            break;
                        }
                        int whatCanBeGiven;
                        var carGroupId    = rcg;
                        var limitForMonth = monthlyLimitByCarGroup.FirstOrDefault(d =>
                                                                                  d.GetMonth() == monthLimitedOn &&
                                                                                  d.Year == yearLimitedOn &&
                                                                                  d.GetCarGroupId() == carGroupId);
                        if (limitForMonth == null)
                        {
                            continue;
                        }

                        //Limit already reached this month for this Car Group
                        if (limitForMonth.AdditionsLimit == limitForMonth.Assigned)
                        {
                            continue;
                        }

                        if (limitForMonth.Assigned + totalAmountToGive > limitForMonth.AdditionsLimit)
                        {
                            whatCanBeGiven     = limitForMonth.AdditionsLimit - limitForMonth.Assigned;
                            totalAmountToGive -= whatCanBeGiven;
                        }
                        else
                        {
                            whatCanBeGiven    = totalAmountToGive;
                            totalAmountToGive = 0;
                        }

                        //Increment Weeky, monthly and Output list
                        limitForMonth.Assigned    += whatCanBeGiven;
                        limitForThisWeek.Assigned += whatCanBeGiven;
                        dgor.AddVehicles(whatCanBeGiven);

                        if (generatedAdditions.Any(d => d.CarGroupId == carGroupId &&
                                                   d.LocationId == locationId &&
                                                   d.IsoWeek == weekLimitedOn &&
                                                   d.Year == yearLimitedOn))
                        {
                            var entityToUpdate = generatedAdditions.First(d => d.CarGroupId == carGroupId &&
                                                                          d.LocationId == locationId &&
                                                                          d.IsoWeek == weekLimitedOn &&
                                                                          d.Year == yearLimitedOn);
                            entityToUpdate.Amount += whatCanBeGiven;
                        }
                        else
                        {
                            generatedAdditions.Add(new WeeklyAddition
                            {
                                LocationId = locationId,
                                CarGroupId = carGroupId,
                                IsoWeek    = weekLimitedOn,
                                Year       = yearLimitedOn,
                                Amount     = whatCanBeGiven
                            });
                        }
                    }
                }
            }
        }
Exemplo n.º 13
0
        public void CalcualteLimits()
        {
            var parameters = ucParameters.GetParameters();

            parameters[DictionaryParameter.StartDate] = (new DateTime(2015, 2, 7)).ToShortDateString();
            List <DemandGapOneRow> demandGapData;

            var sb = new StringBuilder();

            using (var dataAccess = new DemandGapDataAccess(parameters))
            {
                var data = dataAccess.GetDemandGapStepOne();
                //var data2 = dataAccess.GetDemandGapOne(data);
                //var data2 = dataAccess.GetDemandGapStepOneViz();
                //ucDgVis.GridData = data2.ToList();

                demandGapData = data.ToList();
                DemandGapCalculations.CalculateGap(demandGapData);
                demandGapData = demandGapData.ToList();
                ucDemanGapStageOneGrid.GridData = demandGapData;


                //ucDemandGapOne.GridData = data2;

                //var spread = dataAccess.GetSpreadForLocation();
                // ucSpread.GridData = spread;
            }

            List <MonthlyLimitRow> monthlyData;
            List <WeeklyLimitRow>  weeklyData;

            using (var dataAccess = new MonthlyAddLimitDataAccess())
            {
                monthlyData = dataAccess.GetMonthlyLimitRows(2);
                weeklyData  = dataAccess.GetWeekLyLimitRows(3);
            }

            using (var dataAccess = new VehicleDistributionDataAccess())
            {
                if (parameters[DictionaryParameter.CarGroup] != string.Empty &&
                    (!parameters[DictionaryParameter.CarClass].Contains(LocationQueryable.Separator)))
                {
                    var carClassId = int.Parse(parameters[DictionaryParameter.CarClass]);
                    using (var lookup = new LookupDataAccess())
                    {
                        var splitCarGroupIds = lookup.FindCarGroupsInCarClass(carClassId);
                        monthlyData = monthlyData.Where(d => splitCarGroupIds.Contains(d.GetCarGroupId())).ToList();
                    }
                }

                var calculatedAdds = DemandGapCalculations.AssignGroupOne(demandGapData, monthlyData, weeklyData);
                sb.AppendLine("Additions Step 1 Generated:" + calculatedAdds.Sum(d => d.Amount));
                DemandGapCalculations.FillGapsFromMonthlyLimits(demandGapData, monthlyData, weeklyData, calculatedAdds);
                sb.AppendLine("Additions Step 1.1 Generated:" + calculatedAdds.Sum(d => d.Amount));

                dataAccess.FillNames(calculatedAdds);

                ucResult.GridData = calculatedAdds;
            }

            //ucDemanGapStageOneGrid.UpdateUpdatePanel();
            //ucDemandGapOne.UpdateUpdatePanel();

            ucMonthlyLimit.LoadData(monthlyData);
            ucWeeklyLimit.LoadData(weeklyData);


            sb.AppendLine("Total Monthly assigned:" + monthlyData.Sum(d => d.Assigned));
            sb.AppendLine("Total Weekly assigned:" + weeklyData.Sum(d => d.Assigned));
            Session[FaoCalculationTextSummary] = sb.ToString();

            Session[FaoCalculationStarted] = "Finished";
        }
        public void CalcualteLimits()
        {
            try
            {
                var parameters = ucParameters.GetParameters();
                List <WeeklyMaxMinValues> demandGapData;
                var      sb = new StringBuilder();
                var      stepToCalculateTo = int.Parse(ddlStage.SelectedValue);
                DateTime currentDay;

                using (var dataAccess = new DemandGapDataAccess(parameters))
                {
                    currentDay = dataAccess.GetLastHistoryTimestamp();
                    var weeksToCalculate = int.Parse(tbWeeks.Text);

                    //Constant 12 weeks for history calculations
                    parameters[DictionaryParameter.StartDate]         = (currentDay.AddDays(-84)).ToShortDateString();
                    parameters[DictionaryParameter.EndDate]           = (currentDay).ToShortDateString();
                    parameters[DictionaryParameter.ForecastStartDate] = (currentDay).ToShortDateString();

                    var endDate = currentDay.AddDays(weeksToCalculate * 7).Next(DayOfWeek.Sunday);
                    parameters[DictionaryParameter.ForecastEndDate] = (endDate).ToShortDateString();

                    var minComSegScenarioId      = int.Parse(ddlMinCommSeg.SelectedValue);
                    var maxFleetFactorScenarioId = int.Parse(ddlMaxFleetFactor.SelectedValue);

                    demandGapData = dataAccess.CalculateMinMax(minComSegScenarioId, maxFleetFactorScenarioId, 0);


                    ucDgcProgress.CurrentProgress = DemandGapCalculationStep.CalculateMinAndMax;
                    var sw = new Stopwatch();
                    sw.Start();
                    DemandGapOneCalculations.CalculateGap(demandGapData);

                    demandGapData = demandGapData.ToList();
                    sw.Stop();
                    var xx = sw.Elapsed;

                    sw.Reset();
                    sw.Start();
                    var rankingData = dataAccess.GetFinanceEntities();
                    sw.Stop();
                    var yy = sw.Elapsed;
                    sw.Reset();
                    sw.Start();
                    DemandGapOneCalculations.AttachRankingsToDemandGaps(demandGapData, rankingData);

                    sw.Stop();
                    var zz = sw.Elapsed;
                    sw.Reset();
                    sw.Start();

                    demandGapData = demandGapData.OrderBy(d => d.RankFromRevenue).ToList();
                    sw.Stop();
                    var qq = sw.Elapsed;
                    ucDemanGapStageOneGrid.GridData = demandGapData;
                }

                List <MonthlyLimitRow> monthlyData;
                List <WeeklyLimitRow>  weeklyData;

                int?carSegmentId = null;
                if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.CarSegment))
                {
                    carSegmentId = int.Parse(parameters[DictionaryParameter.CarSegment]);
                }

                using (var dataAccess = new MonthlyAddLimitDataAccess())
                {
                    monthlyData = dataAccess.GetMonthlyLimitRows(carSegmentId, currentDay);
                    weeklyData  = dataAccess.GetWeekLyLimitRows(carSegmentId, currentDay);
                }

                using (var dataAccess = new VehicleDistributionDataAccess())
                {
                    if (parameters[DictionaryParameter.CarGroup] != string.Empty &&
                        (!parameters[DictionaryParameter.CarClass].Contains(LocationQueryable.Separator)))
                    {
                        var carClassId = int.Parse(parameters[DictionaryParameter.CarClass]);
                        using (var lookup = new LookupDataAccess())
                        {
                            var splitCarGroupIds = lookup.FindCarGroupsInCarClass(carClassId);
                            monthlyData = monthlyData.Where(d => splitCarGroupIds.Contains(d.GetCarGroupId())).ToList();
                        }
                    }

                    ucDgcProgress.CurrentProgress = DemandGapCalculationStep.StepOneCarGroup;
                    var calculatedAdds = DemandGapOneCalculations.FillGapOneCarGroup(demandGapData, monthlyData,
                                                                                     weeklyData);

                    sb.AppendLine("Additions Step 1 Generated:" + calculatedAdds.Sum(d => d.Amount));

                    if (stepToCalculateTo > 1)
                    {
                        ucDgcProgress.CurrentProgress = DemandGapCalculationStep.StepOneCarClass;
                        DemandGapOneCalculations.FillGapOneCarClass(demandGapData, monthlyData, weeklyData,
                                                                    calculatedAdds);
                        sb.AppendLine("Additions Step 1.1 Generated:" + calculatedAdds.Sum(d => d.Amount));
                    }

                    if (stepToCalculateTo > 2)
                    {
                        ucDgcProgress.CurrentProgress = DemandGapCalculationStep.StepTwoCarGroup;
                        DemandGapOneCalculations.FillGapTwoCarGroup(demandGapData, monthlyData, weeklyData,
                                                                    calculatedAdds);
                        sb.AppendLine("Additions Step 2 Generated:" + calculatedAdds.Sum(d => d.Amount));
                    }

                    if (stepToCalculateTo > 3)
                    {
                        ucDgcProgress.CurrentProgress = DemandGapCalculationStep.StepTwoCarClass;
                        DemandGapOneCalculations.FillGapTwoCarClass(demandGapData, monthlyData, weeklyData,
                                                                    calculatedAdds);
                        sb.AppendLine("Additions Step 2.1 Generated:" + calculatedAdds.Sum(d => d.Amount));
                    }


                    dataAccess.FillNames(calculatedAdds);


                    var distinctContributionData = from dgd in demandGapData
                                                   group dgd by new { CarGroupId = dgd.GetCarGroupId(), LocationId = dgd.GetLocationId() }
                    into groupedData
                        select new
                    {
                        groupedData.Key.CarGroupId,
                        groupedData.Key.LocationId,
                        groupedData.First().Contribution
                    };
                    var additionEntities = from ca in calculatedAdds
                                           join dgd in distinctContributionData on new { ca.CarGroupId, ca.LocationId }
                    equals new { dgd.CarGroupId, dgd.LocationId }
                    into jdgd
                    from joinedDcd in jdgd.DefaultIfEmpty()
                    select new AdditionEntity
                    {
                        Year         = ca.Year,
                        IsoWeek      = ca.IsoWeek,
                        CarGroupId   = ca.CarGroupId,
                        LocationId   = ca.LocationId,
                        CarGroup     = ca.CarGroup,
                        Location     = ca.Location,
                        Amount       = ca.Amount,
                        Contribution = joinedDcd == null ? 0 : (double)joinedDcd.Contribution
                    };

                    ucResult.GridData = additionEntities.ToList();
                }
                ucMonthlyLimit.LoadData(monthlyData);
                ucWeeklyLimit.LoadData(weeklyData);

                sb.AppendLine("Total Monthly assigned: " + monthlyData.Sum(d => d.Assigned));
                sb.AppendLine("Total Weekly assigned: " + weeklyData.Sum(d => d.Assigned));
                SummaryText = sb.ToString();

                ucDgcProgress.CurrentProgress = DemandGapCalculationStep.Complete;
            }
            catch (Exception e)
            {
                SummaryText = e.ToString();
                ucDgcProgress.CurrentProgress = DemandGapCalculationStep.Error;
            }
        }