private decimal CalculateInvolvementPercentage(long _empId, decimal editDays, NewEntryModel newEntryModel)
        {
            WorkDaysModel obj          = DB.Workdays.FirstOrDefault(x => x.EmpID == _empId && x.InvolveMonth == newEntryModel.InvolveMonth.Date);
            decimal       empDaysCount = obj == null ? 0 : obj.DaysCount;

            if (obj == null)
            {
                empDaysCount = DB.Settings.Where(x => x.SetCode == "ManDays").First().SetValue;
            }
            decimal involveMentPercentage = (editDays * 100) / Convert.ToDecimal(empDaysCount);

            return(involveMentPercentage);
        }
Ejemplo n.º 2
0
        public NewEntryBox BindData(string quart)
        {
            var list = (from Quart in DB.Quarter
                        where Quart.Quarter == quart
                        select new
            {
                Quart.Month
            }).ToList();

            string currentQuarter = GetQuarter();

            string currentmonth = quart == currentQuarter?DateTime.Now.Month.ToString("d2") : quart == "Q4" ? "10" : quart == "Q3" ? "07" : quart == "Q2" ? "04" : "01";

            string month1 = quart != currentQuarter && quart == "Q4" ? DateTime.Now.AddYears(-1).ToString("yyyy/" + list[0].Month + "/01") : DateTime.Now.ToString("yyyy/" + list[0].Month + "/01");
            string month2 = quart != currentQuarter && quart == "Q4" ? DateTime.Now.AddYears(-1).ToString("yyyy/" + list[1].Month + "/01") : DateTime.Now.ToString("yyyy/" + list[1].Month + "/01");
            string month3 = quart != currentQuarter && quart == "Q4" ? DateTime.Now.AddYears(-1).ToString("yyyy/" + list[2].Month + "/01") : DateTime.Now.ToString("yyyy/" + list[2].Month + "/01");

            if (currentmonth == list[0].Month)
            {
                TempData["CheckMonth"] = 1;
            }
            else if (currentmonth == list[1].Month)
            {
                TempData["CheckMonth"] = 2;
            }
            else if (currentmonth == list[2].Month)
            {
                TempData["CheckMonth"] = 3;
            }
            long empid = (long)Session[Constants.SessionEmpID];

            System.Collections.Generic.List <BoxItems> GetDetails = DB.Database.SqlQuery <BoxItems>(
                @"exec " + Constants.P_GetNewEntryDefault_Test + " @EmpID,@Month1,@Month2,@Month3",
                new object[] {
                new SqlParameter("@EmpID", empid),
                new SqlParameter("@Month1", month1),
                new SqlParameter("@Month2", month2),
                new SqlParameter("@Month3", month3)
            }).ToList();


            int year = (quart == "Q4" && currentQuarter != "Q4") ? DateTime.Now.AddYears(-1).Year : DateTime.Now.Year;

            NewEntryBox model = new NewEntryBox
            {
                CheckMonth = TempData["CheckMonth"].ToString(),
                Month1     = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(Convert.ToInt32(list[0].Month)) + " " + year,
                Month2     = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(Convert.ToInt32(list[1].Month)) + " " + year,
                Month3     = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(Convert.ToInt32(list[2].Month)) + " " + year
            };

            foreach (BoxItems item in GetDetails)
            {
                item.InvolvementEditDays1 = item.InvolvementEditDays1 == 0 && item.InvolvementDays1 != 0 && item.IsEdit1 ? item.InvolvementDays1 : item.InvolvementEditDays1;
                item.InvolvementEditDays2 = item.InvolvementEditDays2 == 0 && item.InvolvementDays2 != 0 && item.IsEdit2 ? item.InvolvementDays2 : item.InvolvementEditDays2;
                item.InvolvementEditDays3 = item.InvolvementEditDays3 == 0 && item.InvolvementDays3 != 0 && item.IsEdit3 ? item.InvolvementDays3 : item.InvolvementEditDays3;
            }

            DateTime origDT1   = Convert.ToDateTime(month1);
            DateTime lastDate1 = new DateTime(origDT1.Year, origDT1.Month, 1).AddMonths(1).AddDays(-1);
            DateTime origDT2   = Convert.ToDateTime(month2);
            DateTime lastDate2 = new DateTime(origDT2.Year, origDT2.Month, 1).AddMonths(1).AddDays(-1);
            DateTime origDT3   = Convert.ToDateTime(month3);
            DateTime lastDate3 = new DateTime(origDT3.Year, origDT3.Month, 1).AddMonths(1).AddDays(-1);

            foreach (BoxItems item in GetDetails.Where(x => x.TsID != "Total"))
            {
                model.TotalDaysEditCount1    = model.TotalDaysEditCount1 + item.InvolvementEditDays1;
                model.TotalDaysEditCount2    = model.TotalDaysEditCount2 + item.InvolvementEditDays2;
                model.TotalDaysEditCount3    = model.TotalDaysEditCount3 + item.InvolvementEditDays3;
                item.OldInvolvementEditDays1 = item.InvolvementEditDays1;
                item.OldInvolvementEditDays2 = item.InvolvementEditDays2;
                item.OldInvolvementEditDays3 = item.InvolvementEditDays3;
                if (!model.ShowWarning)
                {
                    if (Models.Common.CheckDateRange(item.StartDate.Value, Convert.ToDateTime(month1), lastDate3))
                    {
                        if (!Models.Common.CheckIfNotMonthDateDate(Convert.ToDateTime(month1), Convert.ToDateTime(month2), Convert.ToDateTime(month3), item.StartDate.Value) || (item.EndDate <= lastDate3 && !Models.Common.CheckIfNotMonthDateDate(lastDate1, lastDate2, lastDate3, item.EndDate.Value)))
                        {
                            model.ShowWarning = true;
                        }
                    }
                    else if (Models.Common.CheckDateRange(item.EndDate.Value, Convert.ToDateTime(month1), lastDate3))
                    {
                        if ((item.StartDate.Value >= Convert.ToDateTime(month1) && !Models.Common.CheckIfNotMonthDateDate(Convert.ToDateTime(month1), Convert.ToDateTime(month2), Convert.ToDateTime(month3), item.StartDate.Value)) || (item.EndDate <= lastDate3 && !Models.Common.CheckIfNotMonthDateDate(lastDate1, lastDate2, lastDate3, item.EndDate.Value)))
                        {
                            model.ShowWarning = true;
                        }
                    }
                }
            }

            DateTime date1 = Convert.ToDateTime(month1);
            DateTime date2 = Convert.ToDateTime(month2);
            DateTime date3 = Convert.ToDateTime(month3);

            WorkDaysModel totalDays1 = DB.Workdays.FirstOrDefault(x => x.EmpID == empid && x.InvolveMonth == date1.Date);
            WorkDaysModel totalDays2 = DB.Workdays.FirstOrDefault(x => x.EmpID == empid && x.InvolveMonth == date2.Date);
            WorkDaysModel totalDays3 = DB.Workdays.FirstOrDefault(x => x.EmpID == empid && x.InvolveMonth == date3.Date);
            long          manDays    = 0;

            if (totalDays1 == null || totalDays2 == null || totalDays3 == null)
            {
                manDays = DB.Settings.Where(x => x.SetCode == "ManDays").First().SetValue;
            }
            if (GetDetails.Any())
            {
                int totalInvolvementPercentage = (from x in DB.Employee
                                                  where x.EmployeeID == empid
                                                  select x.TotalInvolvement ?? 100).FirstOrDefault();

                GetDetails[GetDetails.Count - 1].InvolvementEditDays1 = model.TotalDaysEditCount1;
                GetDetails[GetDetails.Count - 1].InvolvementEditDays2 = model.TotalDaysEditCount2;
                GetDetails[GetDetails.Count - 1].InvolvementEditDays3 = model.TotalDaysEditCount3;

                GetDetails[GetDetails.Count - 1].InvolvementDays1 = totalInvolvementPercentage * (totalDays1 != null ? totalDays1.DaysCount : manDays) / 100;
                GetDetails[GetDetails.Count - 1].InvolvementDays2 = totalInvolvementPercentage * (totalDays2 != null ? totalDays2.DaysCount : manDays) / 100;
                GetDetails[GetDetails.Count - 1].InvolvementDays3 = totalInvolvementPercentage * (totalDays3 != null ? totalDays3.DaysCount : manDays) / 100;
            }

            model.Count1 = model.TotalDaysEditCount1 == 0 && model.TotalDaysCount1 == 0 && date1 <= DateTime.Now ? totalDays1 != null ? totalDays1.DaysCount : manDays : model.TotalDaysEditCount1;
            model.Count2 = model.TotalDaysEditCount2 == 0 && model.TotalDaysCount2 == 0 && date2 <= DateTime.Now ? totalDays2 != null ? totalDays2.DaysCount : manDays : model.TotalDaysEditCount2;
            model.Count3 = model.TotalDaysEditCount3 == 0 && model.TotalDaysCount3 == 0 && date3 <= DateTime.Now ? totalDays3 != null ? totalDays3.DaysCount : manDays : model.TotalDaysEditCount3;

            model.QID = quart;

            model.CurrentYear = (quart == "Q4" && currentQuarter != "Q4") ? DateTime.Now.AddYears(-1).Year : DateTime.Now.Year;
            model.Items       = GetDetails;
            foreach (BoxItems item in model.Items.Where(x => x.ProjectID == 0))
            {
                item.IsEdit1 = false;
                item.IsEdit2 = false;
                item.IsEdit3 = false;
            }

            ViewBag.IsEditable = model.Items.Any(x => (x.IsEdit1 || x.IsEdit2 || x.IsEdit3) && x.ProjectID != 0);
            return(model);
        }