public JsonResult GetAreaAnalysisList(string sId, string selectDate)
        {
            ArrayList list = new ArrayList();
            int storeId = ValidationUtility.ToInteger(sId);

            ManagerBonusModel managerBonusModel = new ManagerBonusModel();

            DateTime formatedDate;

            if (!ValidationUtility.IsNull(selectDate))
            {
                formatedDate = ValidationUtility.ToDate(selectDate);
            }
            else
            {
                formatedDate = DateTime.Now;
            }

            AreaAnalysisModel areaAnalysisModel = new AreaAnalysisModel();

            DateTime monthWeekStartDate = ValidationUtility.MonthWeekStartDate(formatedDate);

            DateTime monthWeekEndDate = ValidationUtility.MonthWeekEndDate(formatedDate);

            ArrayList storeList = ValidationUtility.GetStoreList(true);

            ArrayList goalStoreList = new ArrayList();

            foreach (StoreDTO storDTO in storeList)
            {
                if (storDTO.Id == storeId)
                {
                    goalStoreList.Add(storDTO);
                    break;
                }
            }

            ManagerBonusDTO managerBonusDTO = managerBonusModel.CalculateManagerBonus(formatedDate, goalStoreList);

            ManagerBonusDTO returnManagerBonusDTO = managerBonusModel.GetActualBounus(managerBonusDTO.StoreId, managerBonusDTO.FirstDateOFMonth, managerBonusDTO.LastDateOFMonth);

            if (ValidationUtility.IsNull(returnManagerBonusDTO))
            {
                // Add

                managerBonusModel.AddBounus(managerBonusDTO, false);
            }
            else
            {
                // update
                managerBonusModel.UpdateActualValue(managerBonusDTO);
            }

              ManagerBonusDTO actualBonusDTO = areaAnalysisModel.GetActualBounus(storeId, monthWeekStartDate, monthWeekEndDate.AddDays(6));

               list.Add(actualBonusDTO);

               return Json(list, JsonRequestBehavior.AllowGet);
        }
        public JsonResult GetBonusControlCenterList()
        {
            ManagerBonusModel managerBonusModel = new ManagerBonusModel();

            BonusControlCenterModel model = new BonusControlCenterModel();

            DateTime formatedDate = DateTime.Now;

            ArrayList allStoreList = ValidationUtility.GetActiveStoreList(true);

            foreach (StoreDTO storeDTO in allStoreList)
            {
                ArrayList goalStoreList = new ArrayList();

                goalStoreList.Add(storeDTO);
                //Add Or Update Method
                ManagerBonusDTO managerBonusDTO = model.CalculateManagerBonus(formatedDate,goalStoreList);

                ManagerBonusDTO returnManagerBonusDTO = managerBonusModel.GetActualBounus(managerBonusDTO.StoreId, managerBonusDTO.FirstDateOFMonth, managerBonusDTO.LastDateOFMonth);

                if (ValidationUtility.IsNull(returnManagerBonusDTO))
                {
                    // Add

                    managerBonusModel.AddBounus(managerBonusDTO, false);
                }
                else
                {
                    // update
                    managerBonusModel.UpdateActualValue(managerBonusDTO);
                }

            }

            ArrayList centerBonusList = model.GetCenterBonus(formatedDate);

            return Json(centerBonusList, JsonRequestBehavior.AllowGet);
        }
        public ArrayList GetCenterBonus(DateTime selectDate)
        {
            ArrayList list = new ArrayList();

            ManagerBonusModel managerBonusModel = new ManagerBonusModel();
            AreaManagerBonusModel areaManagerBonusModel = new AreaManagerBonusModel();

            DateTime currentMonthWeekStartDate = ValidationUtility.MonthWeekStartDate(selectDate);
            DateTime currentMonthWeekEndDate = ValidationUtility.MonthWeekEndDate(selectDate);

            DateTime monthWeekStartDate = ValidationUtility.MonthWeekStartDate(selectDate.AddMonths(-11));
            DateTime monthWeekEndDate = ValidationUtility.MonthWeekEndDate(selectDate.AddMonths(-11));

            bool isRemaing = false;

            while (!isRemaing)
            {

                double totlEmpBonus = 0.0;
                 double totalManagerAmount = 0;
                 double totalAreaAmount = 0;
                 double totalGeneralManagerBonus = 0;

                if (currentMonthWeekStartDate.Date.Equals(monthWeekStartDate.Date) && currentMonthWeekEndDate.Date.Equals(monthWeekEndDate.Date))
                {

                    isRemaing = true;

                    //// Add Employee Bonus
                    var lastDayOfMonth = DateTime.DaysInMonth(monthWeekEndDate.Year, monthWeekEndDate.Month);
                     totlEmpBonus = GetMonthlyEmpBonus(new DateTime(monthWeekStartDate.Year, monthWeekStartDate.Month, 1), new DateTime(monthWeekEndDate.Year, monthWeekEndDate.Month, lastDayOfMonth));

                    //Get Manager Bonus
                    ArrayList storeIds = GetAreamanagerAssignStoreList(2);

                    foreach (int storeId in storeIds)
                    {
                        ArrayList getbonusList = new ArrayList();
                        ManagerBonusDTO actualBonusDTO = managerBonusModel.GetActualBounus(storeId, monthWeekStartDate, monthWeekEndDate.AddDays(6));
                        getbonusList.Add(actualBonusDTO);
                        ManagerBonusDTO zeroBasisDTO = managerBonusModel.GetZeroBasisList(storeId, monthWeekStartDate, monthWeekEndDate.AddDays(6));
                        getbonusList.Add(zeroBasisDTO);
                        totalManagerAmount = totalManagerAmount + areaManagerBonusModel.GetTotalBonus(getbonusList);
                    }

                    //Get Area Manager
                    storeIds = GetAreamanagerAssignStoreList(5);

                    foreach (int storeId in storeIds)
                    {
                        ArrayList getbonusList = new ArrayList();
                        ManagerBonusDTO actualBonusDTO = managerBonusModel.GetActualBounus(storeId, monthWeekStartDate, monthWeekEndDate.AddDays(6));
                        getbonusList.Add(actualBonusDTO);
                        ManagerBonusDTO zeroBasisDTO = managerBonusModel.GetZeroBasisList(storeId, monthWeekStartDate, monthWeekEndDate.AddDays(6));
                        getbonusList.Add(zeroBasisDTO);
                        totalAreaAmount = totalAreaAmount + areaManagerBonusModel.GetTotalBonus(getbonusList);
                    }

                    // Get General Manager

                    ArrayList areaManagerIds= GetGeneralManagerAssignAreaManagerList();

                    foreach (int amId in areaManagerIds)
                    {
                        ArrayList storeList = ValidationUtility.GetAreaMngAssignStore(amId);

                        foreach (StoreDTO storeDTO in storeList)
                        {
                            ArrayList getbonusList = new ArrayList();
                            ManagerBonusDTO actualBonusDTO = managerBonusModel.GetActualBounus(storeDTO.Id, monthWeekStartDate, monthWeekEndDate.AddDays(6));
                            getbonusList.Add(actualBonusDTO);
                            ManagerBonusDTO zeroBasisDTO = managerBonusModel.GetZeroBasisList(storeDTO.Id, monthWeekStartDate, monthWeekEndDate.AddDays(6));
                            getbonusList.Add(zeroBasisDTO);
                            totalGeneralManagerBonus = totalGeneralManagerBonus + areaManagerBonusModel.GetTotalBonus(getbonusList);

                        }

                    }

                }
                else
                {

                    //// Add Employee Bonus
                    var lastDayOfMonth = DateTime.DaysInMonth(monthWeekEndDate.Year, monthWeekEndDate.Month);
                    totlEmpBonus = GetMonthlyEmpBonus(new DateTime(monthWeekStartDate.Year, monthWeekStartDate.Month, 1), new DateTime(monthWeekEndDate.Year, monthWeekEndDate.Month, lastDayOfMonth));

                    //Get Manager Bonus
                    ArrayList storeIds = GetAreamanagerAssignStoreList(2);

                    foreach (int storeId in storeIds)
                    {
                        ArrayList getbonusList = new ArrayList();
                        ManagerBonusDTO actualBonusDTO = managerBonusModel.GetActualBounus(storeId, monthWeekStartDate, monthWeekEndDate.AddDays(6));
                        getbonusList.Add(actualBonusDTO);
                        ManagerBonusDTO zeroBasisDTO = managerBonusModel.GetZeroBasisList(storeId, monthWeekStartDate, monthWeekEndDate.AddDays(6));
                        getbonusList.Add(zeroBasisDTO);
                        totalManagerAmount = totalManagerAmount + areaManagerBonusModel.GetTotalBonus(getbonusList);
                    }

                    //Get Area Manager
                    storeIds = GetAreamanagerAssignStoreList(5);

                    foreach (int storeId in storeIds)
                    {
                        ArrayList getbonusList = new ArrayList();
                        ManagerBonusDTO actualBonusDTO = managerBonusModel.GetActualBounus(storeId, monthWeekStartDate, monthWeekEndDate.AddDays(6));
                        getbonusList.Add(actualBonusDTO);
                        ManagerBonusDTO zeroBasisDTO = managerBonusModel.GetZeroBasisList(storeId, monthWeekStartDate, monthWeekEndDate.AddDays(6));
                        getbonusList.Add(zeroBasisDTO);
                        totalAreaAmount = totalAreaAmount + areaManagerBonusModel.GetTotalBonus(getbonusList);
                    }

                    // Get General Manager

                    ArrayList areaManagerIds = GetGeneralManagerAssignAreaManagerList();

                    foreach (int amId in areaManagerIds)
                    {
                        ArrayList storeList = ValidationUtility.GetAreaMngAssignActiveStore(amId);

                        foreach (StoreDTO storeDTO in storeList)
                        {
                            ArrayList getbonusList = new ArrayList();
                            ManagerBonusDTO actualBonusDTO = managerBonusModel.GetActualBounus(storeDTO.Id, monthWeekStartDate, monthWeekEndDate.AddDays(6));
                            getbonusList.Add(actualBonusDTO);
                            ManagerBonusDTO zeroBasisDTO = managerBonusModel.GetZeroBasisList(storeDTO.Id, monthWeekStartDate, monthWeekEndDate.AddDays(6));
                            getbonusList.Add(zeroBasisDTO);
                            totalGeneralManagerBonus = totalGeneralManagerBonus + areaManagerBonusModel.GetTotalBonus(getbonusList);

                        }

                    }

                }

                double actualAMBonus = totalAreaAmount / 3;

                double actualGMBonus = totalGeneralManagerBonus / 2;

                double monthlyTotal = totlEmpBonus + totalManagerAmount + actualAMBonus + actualGMBonus;

                BonusControlCenterDTO dto = new BonusControlCenterDTO { Month = monthWeekStartDate.ToString("MMM/yyyy"), EmpBonus = totlEmpBonus, ManagerBonus = totalManagerAmount, AreaManagerBonus = actualAMBonus, GeneralManagerBonus = actualGMBonus, TotalAmount = monthlyTotal };
                list.Add(dto);
                monthWeekStartDate = ValidationUtility.MonthWeekStartDate(monthWeekStartDate.AddMonths(1));
                monthWeekEndDate = ValidationUtility.MonthWeekEndDate(monthWeekEndDate.AddMonths(1));

            }

            list.Reverse();
            return list;
        }
        public JsonResult GetManagerBonusList(string selectDate)
        {
            ManagerBonusModel managerBonusModel = new ManagerBonusModel();

            ArrayList list = new ArrayList();

            DateTime formatedDate;

            if (!ValidationUtility.IsNull(selectDate))
            {
                formatedDate = ValidationUtility.ToDate(selectDate);
            }
            else
            {
                formatedDate = DateTime.Now;
            }

            UserContext cont = (UserContext)Session["UserContext"];

            if (!ValidationUtility.IsNull(cont))
            {
                int sId = managerBonusModel.GetStoredId(cont.Id);

                ArrayList storeList = ValidationUtility.GetStoreList(true);

                ArrayList goalStoreList = new ArrayList();

                foreach (StoreDTO storDTO in storeList)
                {
                    if (storDTO.Id == sId)
                    {
                        goalStoreList.Add(storDTO);
                        break;
                    }
                }

                ManagerBonusDTO managerBonusDTO = managerBonusModel.CalculateManagerBonus(formatedDate, goalStoreList);

                ManagerBonusDTO returnManagerBonusDTO = managerBonusModel.GetActualBounus(managerBonusDTO.StoreId, managerBonusDTO.FirstDateOFMonth, managerBonusDTO.LastDateOFMonth);

                if (ValidationUtility.IsNull(returnManagerBonusDTO))
                {
                    // Add

                    managerBonusModel.AddBounus(managerBonusDTO, false);
                }
                else
                {
                    // update
                    managerBonusModel.UpdateActualValue(managerBonusDTO);
                }

                ManagerBonusDTO actualBonusDTO = managerBonusModel.GetActualBounus(managerBonusDTO.StoreId, managerBonusDTO.FirstDateOFMonth, managerBonusDTO.LastDateOFMonth);
                list.Add(actualBonusDTO);
                ManagerBonusDTO zeroBasisDTO = managerBonusModel.GetZeroBasisList(managerBonusDTO.StoreId, managerBonusDTO.FirstDateOFMonth, managerBonusDTO.LastDateOFMonth);
                list.Add(zeroBasisDTO);
                //  list = managerBonusModel.GetManagerBonus(sId, endDateOfMonth);
            }

            return Json(list, JsonRequestBehavior.AllowGet);
        }
        public JsonResult UpdateZeroBasisValues(string tId, string sId, string foodCost, string laborCost, string salesIncrease,
            string customerIndex, string customerComplaint, string catering, string subInspection)
        {
            ManagerBonusModel managerBonusModel = new ManagerBonusModel();

            ManagerBonusDTO managerBonusDTO = new ManagerBonusDTO();

            double fCost = ValidationUtility.ToDouble(foodCost);
            double lCost = ValidationUtility.ToDouble(laborCost);

            double foodLaborCost = fCost + lCost;

            managerBonusDTO.Id = ValidationUtility.ToInteger(tId);
            managerBonusDTO.StoreId = ValidationUtility.ToInteger(sId);
            managerBonusDTO.FoodCost = fCost;
            managerBonusDTO.LaborCost = lCost;
            managerBonusDTO.FoodLaborCost = foodLaborCost;
            managerBonusDTO.SalesIncrease = ValidationUtility.ToDouble(salesIncrease);
            managerBonusDTO.CustomerIndex = ValidationUtility.ToDouble(customerIndex);
            managerBonusDTO.CustomerComplaint = ValidationUtility.ToDouble(customerComplaint);
            managerBonusDTO.Catering = ValidationUtility.ToDouble(catering);
            managerBonusDTO.SubInspection = ValidationUtility.ToDouble(subInspection);

            managerBonusModel.UpdateZeroBasis(managerBonusDTO);

            ResponseDTO responseDTO = new ResponseDTO { Error = "Success", Message = "Update Successfully" };

            return Json(responseDTO, JsonRequestBehavior.AllowGet);
        }
        public JsonResult UpdateSubInspection(string tId, string sId, string subInspection)
        {
            ManagerBonusModel managerBonusModel = new ManagerBonusModel();

            ManagerBonusDTO managerBonusDTO = new ManagerBonusDTO();
            managerBonusDTO.Id = ValidationUtility.ToInteger(tId);

            managerBonusDTO.StoreId = ValidationUtility.ToInteger(sId);
            managerBonusDTO.SubInspection = ValidationUtility.ToDouble(subInspection);

            managerBonusModel.UpdateSubInspectionValue(managerBonusDTO);

            ResponseDTO responseDTO = new ResponseDTO { Error = "Success", Message = "Sub Inspection Update Successfully" };

            return Json(responseDTO, JsonRequestBehavior.AllowGet);
        }
        public JsonResult AddZeroBasis(String selectDate, string foodCost, string laborCost, string salesIncrease,
            string customerIndex, string customerComplaint, string catering, string subInspection)
        {
            ManagerBonusModel managerBonusModel = new ManagerBonusModel();

            ArrayList storeList = ValidationUtility.GetStoreList(false);

            double fCost = ValidationUtility.ToDouble(foodCost);
            double lCost = ValidationUtility.ToDouble(laborCost);

            double foodLaborCost = fCost + lCost;

            DateTime formatedDate;
            DateTime givenMontWeekStartDate;
            DateTime montEndDate;

            if (!ValidationUtility.IsNull(selectDate))
            {
                formatedDate = ValidationUtility.ToDate(selectDate);

                givenMontWeekStartDate = ValidationUtility.MonthWeekStartDate(formatedDate);

                montEndDate = ValidationUtility.MonthWeekEndDate(formatedDate);

            }
            else
            {
                formatedDate = DateTime.Now;

                givenMontWeekStartDate = ValidationUtility.MonthWeekStartDate(formatedDate);

                montEndDate = ValidationUtility.MonthWeekEndDate(formatedDate);
            }

            ResponseDTO responseDTO = null;

            foreach (StoreDTO storeDTO in storeList)
            {
                ManagerBonusDTO managerBonusDTO = new ManagerBonusDTO();

                managerBonusDTO.StoreId = storeDTO.Id;
                managerBonusDTO.FirstDateOFMonth = givenMontWeekStartDate.Date;
                managerBonusDTO.LastDateOFMonth = montEndDate.Date.AddDays(6);
                managerBonusDTO.FoodCost = fCost;
                managerBonusDTO.LaborCost = lCost;
                managerBonusDTO.FoodLaborCost = foodLaborCost;
                managerBonusDTO.SalesIncrease = ValidationUtility.ToDouble(salesIncrease);
                managerBonusDTO.CustomerIndex = ValidationUtility.ToDouble(customerIndex);
                managerBonusDTO.CustomerComplaint = ValidationUtility.ToDouble(customerComplaint);
                managerBonusDTO.Catering = ValidationUtility.ToDouble(catering);
                managerBonusDTO.SubInspection = ValidationUtility.ToDouble(subInspection);

                ManagerBonusDTO zeroBasisDTO = managerBonusModel.GetZeroBasisList(managerBonusDTO.StoreId, managerBonusDTO.FirstDateOFMonth, managerBonusDTO.LastDateOFMonth);

                //if (!managerBonusModel.IsZeroBasisExist(managerBonusDTO))
                //{
                if (ValidationUtility.IsNull(zeroBasisDTO))
                {
                    managerBonusModel.AddBounus(managerBonusDTO, true);

                    responseDTO = new ResponseDTO { Error = "Success", Message = "Add Successfully" };

                }
                else
                {
                    responseDTO = new ResponseDTO { Error = "Error", Message = "Records Allready Exists Now you can Update Only" };
                }
            }

            return Json(responseDTO, JsonRequestBehavior.AllowGet);
        }
        public JsonResult GetManagerBonusListByAdmin(string sId, string selectDate)
        {
            ArrayList list = new ArrayList();
            ManagerBonusModel managerBonusModel = new ManagerBonusModel();
            int storeId = ValidationUtility.ToInteger(sId);

            DateTime formatedDate;

            if (!ValidationUtility.IsNull(selectDate))
            {
                formatedDate = ValidationUtility.ToDate(selectDate);
            }
            else
            {
                formatedDate = DateTime.Now;
            }

            ArrayList storeList = ValidationUtility.GetActiveStoreList(true);

            ArrayList goalStoreList = new ArrayList();

            foreach (StoreDTO storDTO in storeList)
            {
                if (storDTO.Id == storeId)
                {
                    goalStoreList.Add(storDTO);
                    break;
                }
            }

            ManagerBonusDTO managerBonusDTO = managerBonusModel.CalculateManagerBonus(formatedDate, goalStoreList);

            ManagerBonusDTO returnManagerBonusDTO = managerBonusModel.GetActualBounus(managerBonusDTO.StoreId, managerBonusDTO.FirstDateOFMonth, managerBonusDTO.LastDateOFMonth);

            if (ValidationUtility.IsNull(returnManagerBonusDTO))
            {
                // Add

                managerBonusModel.AddBounus(managerBonusDTO, false);
            }
            else
            {
                // update
                managerBonusModel.UpdateActualValue(managerBonusDTO);
            }

            // ArrayList list = managerBonusModel.GetManagerBonus(storeId, endDateOfMonth);

            ManagerBonusDTO actualBonusDTO = managerBonusModel.GetActualBounus(managerBonusDTO.StoreId, managerBonusDTO.FirstDateOFMonth, managerBonusDTO.LastDateOFMonth);
            //  ArrayList list = managerBonusModel.GetManagerBonus(storeId, endDateOfMonth);
            ManagerBonusDTO zeroBasisDTO = managerBonusModel.GetZeroBasisList(managerBonusDTO.StoreId, managerBonusDTO.FirstDateOFMonth, managerBonusDTO.LastDateOFMonth);

            list.Add(actualBonusDTO);
            list.Add(zeroBasisDTO);

            ManagerBonusDTO differenceDTO=  managerBonusModel.GetDifferenceDTO(actualBonusDTO, zeroBasisDTO);
               list.Add(differenceDTO);

               ManagerBonusDTO totalDTO = managerBonusModel.GetMaximumValue(differenceDTO);
               list.Add(totalDTO);

            return Json(list, JsonRequestBehavior.AllowGet);
        }
        public JsonResult GetAreaManagerBonus(string selectDate)
        {
            AreaManagerBonusModel areaManagerBonusModel = new AreaManagerBonusModel();
            ArrayList bonusList = new ArrayList();
            DateTime formatedDate;

            if (!ValidationUtility.IsNull(selectDate))
            {
                formatedDate = ValidationUtility.ToDate(selectDate);

            }
            else
            {
                formatedDate = DateTime.Now;
            }

            DateTime givenMontWeekStartDate = ValidationUtility.MonthWeekStartDate(formatedDate);

            DateTime montEndDate = ValidationUtility.MonthWeekEndDate(formatedDate);

            UserContext cont = (UserContext)Session["UserContext"];

            ArrayList assignStoreList = null;

            ManagerBonusModel managerBonusModel = new ManagerBonusModel();

            if (!ValidationUtility.IsNull(cont))
            {
                //  assignStoreList = areaManagerBonusModel.GetAreaMngAssignStore(cont.Id);

               // assignStoreList = ValidationUtility.GetAreaMngAssignStore(cont.Id);

                assignStoreList = ValidationUtility.GetAreaMngAssignActiveStore(cont.Id);

                foreach (StoreDTO storeDTO in assignStoreList)
                {
                    double totalAmount = 0;
                    ArrayList storeList = ValidationUtility.GetActiveStoreList(true);

                    ArrayList goalStoreList = new ArrayList();

                    foreach (StoreDTO storDTO in storeList)
                    {
                        if (storDTO.Id == storeDTO.Id)
                        {
                            goalStoreList.Add(storDTO);
                            break;
                        }
                    }

                    ManagerBonusDTO managerBonusDTO = managerBonusModel.CalculateManagerBonus(formatedDate, goalStoreList);

                    ManagerBonusDTO returnManagerBonusDTO = managerBonusModel.GetActualBounus(managerBonusDTO.StoreId, managerBonusDTO.FirstDateOFMonth, managerBonusDTO.LastDateOFMonth);

                    if (ValidationUtility.IsNull(returnManagerBonusDTO))
                    {
                        // Add

                        managerBonusModel.AddBounus(managerBonusDTO, false);
                    }
                    else
                    {
                        // update
                        managerBonusModel.UpdateActualValue(managerBonusDTO);
                    }

                    ArrayList getbonusList = new ArrayList();

                    ManagerBonusDTO actualBonusDTO = managerBonusModel.GetActualBounus(storeDTO.Id, givenMontWeekStartDate, montEndDate.AddDays(6));
                    getbonusList.Add(actualBonusDTO);
                    ManagerBonusDTO zeroBasisDTO = managerBonusModel.GetZeroBasisList(storeDTO.Id, givenMontWeekStartDate, montEndDate.AddDays(6));
                    getbonusList.Add(zeroBasisDTO);
                    totalAmount = areaManagerBonusModel.GetTotalBonus(getbonusList);

                    AreaManagerBonusDTO areaManagerBonusDTO = new AreaManagerBonusDTO { StoreId = storeDTO.Id, StoreName = storeDTO.StoreName, TotalStoreBonus = totalAmount };
                    bonusList.Add(areaManagerBonusDTO);

                }

            }

            return Json(bonusList, JsonRequestBehavior.AllowGet);
        }