public static AMCViewModel Create(int itemId, int storeId, int amcRange, DateTime endDate)
        {
            var vwGetAllItemsRepository = new vwGetAllItemsRepository();
            var amcrepo         = new AmcReportRepository();
            var allItemIdsonamc = amcrepo.AllAmcReport().SingleOrDefault(m => m.ItemID == itemId && m.StoreID == storeId);
            var products        = vwGetAllItemsRepository.AllItems().SingleOrDefault(m => m.ID == itemId);
            var startDate       = endDate.Subtract(TimeSpan.FromDays(amcRange * 30));
            var viewModel       = new AMCViewModel
            {
                ItemID          = itemId,
                StoreID         = storeId,
                AmcRange        = amcRange,
                IssueInAmcRange = Builder.CalculateTotalConsumptionWithoutDOS(itemId, storeId, startDate, endDate),
                DaysOutOfStock  = Builder.CalculateStockoutDays(itemId, storeId, startDate, DateTime.Now),
                AmcWithDos      = Builder.CalculateAverageConsumption(itemId, storeId, startDate, endDate, CalculationOptions.Monthly),
                IssueWithDOS    = Builder.CalculateTotalConsumptionAMC(itemId, storeId, startDate, endDate)
            };

            AddorUpdateAmc(itemId, storeId, amcRange, endDate, amcrepo, viewModel, allItemIdsonamc, startDate);
            if (products != null)
            {
                viewModel.FullItemName = products.FullItemName;
            }
            viewModel.AmcWithoutDos = Convert.ToDouble(Builder.CalculateTotalConsumptionWithoutDOS(itemId, storeId, startDate, endDate)) / Convert.ToDouble(viewModel.AmcRange);
            return(viewModel);
        }
 public static AMCViewModel Create(int itemId, int storeId, int unitid,int amcRange, DateTime endDate)
 {
     var vwGetAllItemsRepository =new vwGetAllItemsRepository();
     var amcrepo = new AmcReportRepository();
     var allItemIdsonamc = amcrepo.AllAmcReport().SingleOrDefault(m => m.ItemID == itemId && m.StoreID == storeId && m.UnitID ==unitid);
     var products = vwGetAllItemsRepository.AllItems().SingleOrDefault(m => m.ID == itemId);
     var startDate = endDate.Subtract(TimeSpan.FromDays(amcRange*30));
     var viewModel = new AMCViewModel
                         {
                             ItemID = itemId,
                             StoreID = storeId,
                             AmcRange = amcRange,
                             IssueInAmcRange =Builder.CalculateTotalConsumptionWithoutDOS(itemId, storeId, startDate, endDate),
                             DaysOutOfStock =Builder.CalculateStockoutDays(itemId, storeId, startDate, DateTime.Now),
                             AmcWithDos =Builder.CalculateAverageConsumption(itemId, storeId, startDate, endDate,CalculationOptions.Monthly),
                             IssueWithDOS =Builder.CalculateTotalConsumptionAMC(itemId, storeId, startDate, endDate),
                             UnitID = unitid,
                         };
     AddorUpdateAmc(itemId, storeId, unitid,amcRange, endDate, amcrepo, viewModel, allItemIdsonamc, startDate);
     if (products != null)
     viewModel.FullItemName = products.FullItemName;
     viewModel.AmcWithoutDos = Convert.ToDouble(Builder.CalculateTotalConsumptionWithoutDOS(itemId,storeId,startDate,endDate)) / Convert.ToDouble(viewModel.AmcRange);
     return viewModel;
 }
 private static void AddorUpdateAmc(int itemId, int storeId,int amcRange, DateTime endDate, AmcReportRepository amcrepo, AMCViewModel viewModel, AmcReport allItemIds, DateTime startDate)
 {
     if (allItemIds != null)
     {
         allItemIds.IssueInAmcRange = Builder.CalculateTotalConsumptionWithoutDOS(itemId, storeId, startDate, endDate);
         allItemIds.IssueWithDOS = Builder.CalculateTotalConsumptionAMC(itemId, storeId, startDate, endDate);
         allItemIds.AmcWithDOS = Builder.CalculateTotalConsumptionAMC(itemId, storeId, startDate, endDate) / Convert.ToDouble(viewModel.AmcRange);
         allItemIds.AmcWithOutDOS = Builder.CalculateTotalConsumptionWithoutDOS(itemId, storeId, startDate, endDate) / Convert.ToDouble(viewModel.AmcRange);
         allItemIds.DaysOutOfStock = Builder.CalculateStockoutDays(itemId, storeId, startDate, DateTime.Now);
         allItemIds.AmcRange = amcRange;
         allItemIds.LastIndexedTime = DateTime.Now;
         amcrepo.Update(allItemIds);
     }
     else
     {
         var amcreport = new AmcReport
         {
             ItemID = itemId,
             StoreID = storeId,
             AmcRange = amcRange,
             IssueWithDOS = Builder.CalculateTotalConsumptionAMC(itemId, storeId, startDate, endDate),
             IssueInAmcRange = Builder.CalculateTotalConsumptionWithoutDOS(itemId, storeId, startDate, endDate),
             DaysOutOfStock = Builder.CalculateStockoutDays(itemId, storeId, startDate, DateTime.Now),
             AmcWithDOS = Builder.CalculateTotalConsumptionAMC(itemId, storeId, startDate, endDate) / Convert.ToDouble(viewModel.AmcRange),
             AmcWithOutDOS = Builder.CalculateTotalConsumptionWithoutDOS(itemId, storeId, startDate, endDate) / Convert.ToDouble(viewModel.AmcRange),
             LastIndexedTime = DateTime.Now
         };
         amcrepo.Add(amcreport);
     }
 }
 private static void AddorUpdateAmc(int itemId, int storeId, int amcRange, DateTime endDate, AmcReportRepository amcrepo, AMCViewModel viewModel, AmcReport allItemIds, DateTime startDate)
 {
     if (allItemIds != null)
     {
         allItemIds.IssueInAmcRange = Builder.CalculateTotalConsumptionWithoutDOS(itemId, storeId, startDate, endDate);
         allItemIds.IssueWithDOS    = Builder.CalculateTotalConsumptionAMC(itemId, storeId, startDate, endDate);
         allItemIds.AmcWithDOS      = Builder.CalculateTotalConsumptionAMC(itemId, storeId, startDate, endDate) / Convert.ToDouble(viewModel.AmcRange);
         allItemIds.AmcWithOutDOS   = Builder.CalculateTotalConsumptionWithoutDOS(itemId, storeId, startDate, endDate) / Convert.ToDouble(viewModel.AmcRange);
         allItemIds.DaysOutOfStock  = Builder.CalculateStockoutDays(itemId, storeId, startDate, DateTime.Now);
         allItemIds.AmcRange        = amcRange;
         allItemIds.LastIndexedTime = DateTime.Now;
         amcrepo.Update(allItemIds);
     }
     else
     {
         var amcreport = new AmcReport
         {
             ItemID          = itemId,
             StoreID         = storeId,
             AmcRange        = amcRange,
             IssueWithDOS    = Builder.CalculateTotalConsumptionAMC(itemId, storeId, startDate, endDate),
             IssueInAmcRange = Builder.CalculateTotalConsumptionWithoutDOS(itemId, storeId, startDate, endDate),
             DaysOutOfStock  = Builder.CalculateStockoutDays(itemId, storeId, startDate, DateTime.Now),
             AmcWithDOS      = Builder.CalculateTotalConsumptionAMC(itemId, storeId, startDate, endDate) / Convert.ToDouble(viewModel.AmcRange),
             AmcWithOutDOS   = Builder.CalculateTotalConsumptionWithoutDOS(itemId, storeId, startDate, endDate) / Convert.ToDouble(viewModel.AmcRange),
             LastIndexedTime = DateTime.Now
         };
         amcrepo.Add(amcreport);
     }
 }