//last modified by - rusith
        private void PopulateProductionCapacityDetails(int proCapID)
        {
            if (IsNotRefresh)
            {
                var objProCap = new WeeklyProductionCapacityBO();
                objProCap.ID = proCapID;
                objProCap.GetObject();

                lblWeekNo.Text          = objProCap.WeekNo + "-" + objProCap.WeekendDate.Year;
                lblFridayOfWeekPop.Text = objProCap.WeekendDate.ToString("dd MMMM yyyy");

                this.txtWorkingDays.Text = objProCap.NoOfHolidays.ToString();
                txtWorkingHours.Text     = objProCap.HoursPerDay.ToString();
                txtOrderCutOffDate.Text  = objProCap.OrderCutOffDate.HasValue ? objProCap.OrderCutOffDate.Value.ToString("dd MMMM yyyy") : string.Empty;
                txtETD.Text        = objProCap.EstimatedDateOfDespatch.HasValue ? objProCap.EstimatedDateOfDespatch.Value.ToString("dd MMMM yyyy") : string.Empty;
                txtETA.Text        = objProCap.EstimatedDateOfArrival.HasValue ? objProCap.EstimatedDateOfArrival.Value.ToString("dd MMMM yyyy") : string.Empty;
                txtNotes.Text      = objProCap.Notes;
                txtSalesTaget.Text = objProCap.SalesTarget.GetValueOrDefault().ToString();

                var objCapacity = new WeeklyProductionCapacityDetailsBO {
                    WeeklyProductionCapacity = proCapID
                };
                var lstCapDetails = objCapacity.SearchObjects();
                var lstTypes      = (new ItemTypeBO()).SearchObjects();

                var lstProductCapacityDetails = lstTypes.Select(objType => new KeyValuePair <ItemTypeBO, KeyValuePair <WeeklyProductionCapacityBO, WeeklyProductionCapacityDetailsBO> >(objType, new KeyValuePair <WeeklyProductionCapacityBO, WeeklyProductionCapacityDetailsBO>(objProCap, lstCapDetails.FirstOrDefault(m => m.ItemType == objType.ID)))).ToList();

                rptItemTypes.DataSource = lstProductCapacityDetails;
                rptItemTypes.DataBind();
                ViewState["IsPopulateModel"] = true;
            }
            else
            {
                ViewState["IsPopulateModel"] = false;
                ViewState["IsPageValid"]     = true;
            }
        }
        protected void RadGridProductionCapacities_ItemDataBound(object sender, GridItemEventArgs e)
        {
            if (e.Item is GridDataItem)
            {
                var item = e.Item as GridDataItem;

                if (item.ItemIndex > -1 && item.DataItem is WeeklyProductionCapacityBO)
                {
                    var objProductionCapacity = (WeeklyProductionCapacityBO)item.DataItem;

                    var lblWeekNumber = (Label)item.FindControl("lblWeekNumber");
                    lblWeekNumber.Text = objProductionCapacity.WeekNo + "-" + objProductionCapacity.WeekendDate.Year;
                    var day = objProductionCapacity.WeekendDate.DayOfYear;
                    if (DateTime.Now.Year == objProductionCapacity.WeekendDate.Year && (DateTime.Now.DayOfYear <= day && DateTime.Now.DayOfYear >= day - 6))
                    {
                        item.BackColor = Color.Orange;
                    }

                    var linkEdit = (HtmlAnchor)item.FindControl("linkEdit");
                    linkEdit.Attributes.Add("qid", objProductionCapacity.ID.ToString());

                    var litPoloProdCap    = (Literal)item.FindControl("litPoloProdCap");
                    var litPolo5PcsCap    = (Literal)item.FindControl("litPolo5PcsCap");
                    var litPoloSamplesCap = (Literal)item.FindControl("litPoloSamplesCap");
                    var litPoloWorkers    = (Literal)item.FindControl("litPoloWorkers");
                    var litPoloEfficiency = (Literal)item.FindControl("litPoloEfficiency");

                    var litOuterProdCap    = (Literal)item.FindControl("litOuterProdCap");
                    var litOuter5PcsCap    = (Literal)item.FindControl("litOuter5PcsCap");
                    var litOuterSamplesCap = (Literal)item.FindControl("litOuterSamplesCap");
                    var litOuterWorkers    = (Literal)item.FindControl("litOuterWorkers");
                    var litOuterEfficiency = (Literal)item.FindControl("litOuterEfficiency");

                    var objProdCapDetail = new WeeklyProductionCapacityDetailsBO {
                        WeeklyProductionCapacity = objProductionCapacity.ID
                    };
                    var lstDetails = objProdCapDetail.SearchObjects();

                    var objPolosDetail = lstDetails.FirstOrDefault(m => m.ItemType == 1);
                    var objOuterDetail = lstDetails.FirstOrDefault(m => m.ItemType == 2);

                    if (objPolosDetail != null)
                    {
                        litPoloProdCap.Text    = string.Format("{0:N0}", objPolosDetail.TotalCapacity);
                        litPolo5PcsCap.Text    = string.Format("{0:N0}", objPolosDetail.FivePcsCapacity);
                        litPoloSamplesCap.Text = string.Format("{0:N0}", objPolosDetail.SampleCapacity);
                        litPoloWorkers.Text    = string.Format("{0:N0}", objPolosDetail.Workers);
                        litPoloEfficiency.Text = string.Format("{0:N}", objPolosDetail.Efficiency);
                    }

                    if (objOuterDetail != null)
                    {
                        litOuterProdCap.Text    = string.Format("{0:N0}", objOuterDetail.TotalCapacity);
                        litOuter5PcsCap.Text    = string.Format("{0:N0}", objOuterDetail.FivePcsCapacity);
                        litOuterSamplesCap.Text = string.Format("{0:N0}", objOuterDetail.SampleCapacity);
                        litOuterWorkers.Text    = string.Format("{0:N0}", objOuterDetail.Workers);
                        litOuterEfficiency.Text = string.Format("{0:N}", objOuterDetail.Efficiency);
                    }

                    var i = 0;
                    foreach (TableCell cell in item.Cells)
                    {
                        if (i > 8 && i < 14)
                        {
                            cell.BackColor = Color.PowderBlue;
                        }
                        else if (i > 13 && i < 19)
                        {
                            cell.BackColor = Color.Moccasin;
                        }

                        i++;
                    }
                }
            }
        }
        private void AddNextYear()
        {
            using (var scope = new TransactionScope())
            {
                var currentYear = DateTime.Now.Year;

                var currentWeeks = new WeeklyProductionCapacityBO(ObjContext).GetAllObject();
                if (currentWeeks.Any())
                {
                    if (currentWeeks.Count > 1)
                    {
                        var lastWeek = currentWeeks.OrderBy(w => w.WeekendDate).Last().WeekendDate;
                        currentYear = lastWeek.Year == currentWeeks[currentWeeks.Count() - 2].WeekendDate.Year ?
                                      lastWeek.AddYears(1).Year : lastWeek.Year;
                    }
                    else
                    {
                        currentYear = currentWeeks.Last().WeekendDate.AddYears(1).Year;
                    }
                }
                var currentYearStartDate = new DateTime(currentYear, 1, 1);
                while (currentYearStartDate.DayOfWeek != DayOfWeek.Tuesday)
                {
                    currentYearStartDate = currentYearStartDate.AddDays(1);
                }
                var weekNumber = 1;
                while (currentYearStartDate.Year == currentYear)
                {
                    var weeklyProductionCapacity = new WeeklyProductionCapacityBO(ObjContext)
                    {
                        WeekNo = weekNumber, WeekendDate = currentYearStartDate, SalesTarget = 0, HoursPerDay = (decimal)10.0, NoOfHolidays = 6, OrderCutOffDate = currentYearStartDate.AddDays(-18), EstimatedDateOfDespatch = currentYearStartDate, EstimatedDateOfArrival = currentYearStartDate.AddDays(3)
                    };

                    weeklyProductionCapacity.Add();

                    var polodetails = new WeeklyProductionCapacityDetailsBO(ObjContext)
                    {
                        ItemType = 1, TotalCapacity = 5850, FivePcsCapacity = 100, SampleCapacity = 200, Workers = 65, Efficiency = (decimal)0.45
                    };
                    var outerwaredetails = new WeeklyProductionCapacityDetailsBO(ObjContext)
                    {
                        ItemType = 2, TotalCapacity = 450, FivePcsCapacity = 10, SampleCapacity = 20, Workers = 15, Efficiency = (decimal)0.25
                    };
                    weeklyProductionCapacity.WeeklyProductionCapacityDetailssWhereThisIsWeeklyProductionCapacity.Add(polodetails);
                    weeklyProductionCapacity.WeeklyProductionCapacityDetailssWhereThisIsWeeklyProductionCapacity.Add(outerwaredetails);
                    currentYearStartDate = currentYearStartDate.AddDays(7);
                    weekNumber++;
                }
                ObjContext.SaveChanges();
                scope.Complete();
            }
            PopulateDataGrid();


            //try
            //{
            //    using (var ts = new TransactionScope())
            //    {
            //        var currentYear = DateTime.Now.Year.ToString();
            //        bool isLeap = false;


            //        List<WeeklyProductionCapacityBO> lstWeeklyProdCap = (new WeeklyProductionCapacityBO()).SearchObjects();
            //        if (lstWeeklyProdCap.Count > 0)
            //        {
            //            currentYear = lstWeeklyProdCap.Last().WeekendDate.AddYears(1).Year.ToString();
            //        }

            //        DateTime dFirst = DateTime.Parse("01 / 01 /" + currentYear);
            //        DateTime dLast = DateTime.Parse("31 / 12 /" + currentYear);

            //        if ((int.Parse(currentYear) % 4 == 0) && (int.Parse(currentYear) % 100 != 0) || (int.Parse(currentYear) % 400 == 0))
            //        {
            //            isLeap = true;
            //        }

            //        int weekCount = (isLeap == true) ? this.GetWeeksInYear(int.Parse(currentYear), dLast) : int.Parse((dLast.Subtract(dFirst).Days / 7).ToString());
            //        //int id = this.GetWeeksInYear(int.Parse(currentYear), dLast);

            //        DateTime firstTuesday = dFirst;

            //        while (firstTuesday.DayOfWeek != DayOfWeek.Tuesday)
            //        {
            //            firstTuesday = firstTuesday.AddDays(1);
            //        }

            //        for (int i = 1; i <= weekCount; i++)
            //        {
            //            WeeklyProductionCapacityBO objProductionCapacity = new WeeklyProductionCapacityBO(this.ObjContext);
            //            objProductionCapacity.WeekNo = i;
            //            objProductionCapacity.WeekendDate = firstTuesday;
            //            objProductionCapacity.Capacity = 0;
            //            objProductionCapacity.Add();

            //            firstTuesday = firstTuesday.AddDays(7);
            //        }

            //        this.ObjContext.SaveChanges();
            //        ts.Complete();
            //    }
            //}
            //catch (Exception)
            //{
            //    //ignored
            //}
        }
        private void ProcessForm(int queryId, bool isDelete)
        {
            try
            {
                using (var ts = new TransactionScope())
                {
                    var objProductionCapacity = new WeeklyProductionCapacityBO(ObjContext);
                    if (queryId > 0)
                    {
                        objProductionCapacity.ID = queryId;
                        objProductionCapacity.GetObject();
                    }
                    if (isDelete)
                    {
                        objProductionCapacity.Delete();
                    }

                    else
                    {
                        objProductionCapacity.NoOfHolidays            = int.Parse(txtWorkingDays.Text);
                        objProductionCapacity.HoursPerDay             = decimal.Parse(txtWorkingHours.Text);
                        objProductionCapacity.OrderCutOffDate         = DateTime.Parse(txtOrderCutOffDate.Text);
                        objProductionCapacity.EstimatedDateOfDespatch = DateTime.Parse(txtETD.Text);
                        objProductionCapacity.EstimatedDateOfArrival  = DateTime.Parse(txtETA.Text);
                        objProductionCapacity.Notes       = txtNotes.Text;
                        objProductionCapacity.SalesTarget = decimal.Parse(txtSalesTaget.Text);

                        foreach (RepeaterItem rptItem in rptItemTypes.Items)
                        {
                            var hdnProdCapDetailID = (HiddenField)rptItem.FindControl("hdnProdCapDetailID");
                            var hdnItemTypeID      = (HiddenField)rptItem.FindControl("hdnItemTypeID");
                            var txtTotalCapacity   = (TextBox)rptItem.FindControl("txtTotalCapacity");
                            var txt5PcsCapacity    = (TextBox)rptItem.FindControl("txt5PcsCapacity");
                            var txtSampleCapacity  = (TextBox)rptItem.FindControl("txtSampleCapacity");
                            var txtWorkers         = (TextBox)rptItem.FindControl("txtWorkers");
                            var txtEfficiency      = (TextBox)rptItem.FindControl("txtEfficiency");
                            var objProdCapDetailBO = new WeeklyProductionCapacityDetailsBO(ObjContext);
                            if (int.Parse(hdnProdCapDetailID.Value) > 0)
                            {
                                objProdCapDetailBO.ID = int.Parse(hdnProdCapDetailID.Value);
                                objProdCapDetailBO.GetObject();
                            }
                            else
                            {
                                objProdCapDetailBO.WeeklyProductionCapacity = queryId;
                                objProdCapDetailBO.ItemType = int.Parse(hdnItemTypeID.Value);
                            }
                            objProdCapDetailBO.TotalCapacity   = int.Parse(txtTotalCapacity.Text) * objProductionCapacity.NoOfHolidays;
                            objProdCapDetailBO.FivePcsCapacity = int.Parse(txt5PcsCapacity.Text) * objProductionCapacity.NoOfHolidays;
                            objProdCapDetailBO.SampleCapacity  = int.Parse(txtSampleCapacity.Text) * objProductionCapacity.NoOfHolidays;
                            objProdCapDetailBO.Workers         = int.Parse(txtWorkers.Text);
                            objProdCapDetailBO.Efficiency      = decimal.Parse(txtEfficiency.Text);
                        }
                        if (queryId == 0)
                        {
                            objProductionCapacity.Add();
                        }
                    }
                    ObjContext.SaveChanges();
                    ts.Complete();
                }
            }
            catch (Exception ex)
            {
                IndicoLogging.log.Error("Error occurred while Adding or Editing  or Deleting  the details in Production Capacity", ex);
            }
        }