コード例 #1
0
        //Author        : Siddhant Chawade
        //Date          : 17th Feb 2020
        //Description   : To get payroll bi weekly report
        public PayrollBiWeekly GetExpensesBiWeekly(long?managerId, long?UserId, DateTime?fromDate, DateTime?toDate)
        {
            PayrollBiWeekly    data        = new PayrollBiWeekly();
            List <UserPayroll> UserPayroll = new List <UserPayroll>();

            try
            {
                //assigning dates if dates are null
                if (fromDate == null || toDate == null)
                {
                    toDate   = DateTime.Now.Date;
                    fromDate = DateTime.Now.AddDays(-13).Date;
                }

                //list of summary of all users
                List <string> summary = new List <string>();
                //summary.Add("Summary of All Users");
                for (int i = 1; i <= 17; i++)
                {
                    summary.Add("0.00");
                }

                //list of headers
                List <string> headers = new List <string>();
                //headers.Add("First Name");
                //headers.Add("Last Name");
                //headers.Add("Time Type");

                //to add dates in headers
                List <DateTime?> dates = new List <DateTime?>();
                while (fromDate <= toDate)
                {
                    if (dates.Count == 7)
                    {
                        headers.Add("Week Totals");
                        //headers.Add("Week Total - OT");
                    }
                    dates.Add(fromDate);
                    headers.Add(Convert.ToDateTime(fromDate).ToString("yyyy-MM-dd"));
                    fromDate = Convert.ToDateTime(fromDate).AddDays(1);
                }

                //adding other columns in header
                headers.Add("Week Totals");
                //headers.Add("Bi-Week Total - OT");
                headers.Add("Bi-Week Total");
                //headers.Add("Pay Period Total - OT");

                //fetching list of users
                var users = _adminMethods.GetUsers().OrderBy(x => x.userName).ToList();
                data.Users = users.AsEnumerable().Select(x => new IBWUsers
                {
                    userId   = x.userId,
                    userName = x.userName + " " + x.aliasName
                }).ToList();

                var managers = users.Where(x => x.asRMCount > 0).ToList();
                data.ReportingManagers = managers.AsEnumerable().Select(x => new IBWUsers
                {
                    userId   = x.userId,
                    userName = x.userName + " " + x.aliasName
                }).ToList();

                //applying reporting manager filter
                if (managerId != null)
                {
                    users = users.Where(x => x.reportingManagerId == managerId).ToList();
                }

                //applying user filter
                if (UserId != null)
                {
                    users = users.Where(x => x.userId == UserId).ToList();
                }

                //fetching list of approved and reimbursable expenses of all users
                var exp = _schedulingDB.sp_get_pm_expenses().Where(x => x.isApproved == true && x.isReimbursable == "Yes").ToList();
                //fetching the list of holidays
                //var holidays = _adminMethods.GetHolidays();
                //fetching the list of leaves
                //var leaves = _adminDB.GetLeaveRequests().ToList();
                if (users != null && users.Count > 0)
                {
                    foreach (var user in users)
                    {
                        UserPayroll userPayroll = new UserPayroll();

                        userPayroll.UserId    = user.userId;
                        userPayroll.FirstName = user.userName;
                        userPayroll.LastName  = user.aliasName;
                        //list of regular hours
                        List <string> regular = new List <string>();
                        //list of holiday hours
                        //List<string> holiday = new List<string>();
                        //list of leave hours
                        //List<string> leave = new List<string>();
                        //list of total hours
                        //List<string> total = new List<string>();

                        //variables for calculating totals
                        double?regularTotal  = 0.00;
                        double?regularTotal1 = 0.00;
                        double?regularTotal2 = 0.00;

                        //double? holidayTotal = 0.00;
                        //double? holidayTotal1 = 0.00;
                        //double? holidayTotal2 = 0.00;

                        //double? leaveTotal = 0.00;
                        //double? leaveTotal1 = 0.00;
                        //double? leaveTotal2 = 0.00;

                        //double? totalTotal = 0.00;
                        //double? totalTotal1 = 0.00;
                        //double? totalTotal2 = 0.00;

                        //double? ot = 0.00;
                        //double? ot1 = 0.00;
                        //double? ot2 = 0.00;

                        //regular.Add("Regular Hours");
                        //holiday.Add("Statutory Holiday");
                        //leave.Add("Leave");
                        //total.Add("Total");

                        int i = 0;
                        foreach (var date in dates)
                        {
                            //bool isHoliday = false;
                            //bool isLeave = false;
                            //isHoliday = holidays.Where(x => x.holidayDate == date).ToList().Count > 0 ? true : false;
                            //isLeave = leaves.Where(x => x.int_created_by == user.userId && x.is_approved == true && ((x.dt_from_date == date && x.dt_to_date == null) || (x.dt_from_date <= date && x.dt_to_date != null && x.dt_to_date >= date))).ToList().Count > 0 ? true : false;

                            //getting list of approved timesheets for current date
                            var currentDayHours = exp.Where(x => x.userId == user.userId && x.completionDate != "-" && Convert.ToDateTime(x.completionDate) == date).ToList();
                            if (currentDayHours != null && currentDayHours.Count > 0)
                            {
                                //calculating sum of worked hours
                                double?thisDayExp = currentDayHours.Sum(x => Convert.ToDouble(x.Quantity * x.expenseRate));

                                //calculating summary of all users
                                summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + thisDayExp).ToString("0.00");
                                regular.Add(Convert.ToDouble(thisDayExp).ToString("0.00"));

                                //adding to week 1 total
                                if (regular.Count <= 7)
                                {
                                    regularTotal1 = regularTotal1 + thisDayExp;
                                }
                                //adding to week 2 total
                                else
                                {
                                    regularTotal2 = regularTotal2 + thisDayExp;
                                }

                                ////adding to holiday list if current date is a holiday
                                //if (isHoliday)
                                //{
                                //    regular.Add("0.00");
                                //    holiday.Add(Convert.ToDouble(thisDayExp).ToString("0.00"));
                                //    leave.Add("0.00");
                                //    total.Add(Convert.ToDouble(thisDayExp).ToString("0.00"));
                                //    //adding to week 1 total
                                //    if (regular.Count <= 8)
                                //    {
                                //        holidayTotal1 = holidayTotal1 + thisDayExp;
                                //        totalTotal1 = totalTotal1 + thisDayExp;
                                //    }
                                //    //adding to week 2 total
                                //    else
                                //    {
                                //        holidayTotal2 = holidayTotal2 + thisDayExp;
                                //        totalTotal2 = totalTotal2 + thisDayExp;
                                //    }
                                //}
                                ////adding to leave list if current date is a leave
                                //else if (isLeave)
                                //{
                                //    regular.Add("0.00");
                                //    holiday.Add("0.00");
                                //    leave.Add(Convert.ToDouble(thisDayExp).ToString("0.00"));
                                //    total.Add(Convert.ToDouble(thisDayExp).ToString("0.00"));
                                //    //adding to week 1 total
                                //    if (regular.Count <= 8)
                                //    {
                                //        leaveTotal1 = leaveTotal1 + thisDayExp;
                                //        totalTotal1 = totalTotal1 + thisDayExp;
                                //    }
                                //    //adding to week 2 total
                                //    else
                                //    {
                                //        leaveTotal2 = leaveTotal2 + thisDayExp;
                                //        totalTotal2 = totalTotal2 + thisDayExp;
                                //    }
                                //}
                                ////adding to regular list if current date is neither a holiday nor a leave
                                //else
                                //{
                                //    regular.Add(Convert.ToDouble(thisDayExp).ToString("0.00"));
                                //    holiday.Add("0.00");
                                //    leave.Add("0.00");
                                //    total.Add(Convert.ToDouble(thisDayExp).ToString("0.00"));
                                //    //adding to week 1 total
                                //    if (regular.Count <= 8)
                                //    {
                                //        regularTotal1 = regularTotal1 + thisDayExp;
                                //        totalTotal1 = totalTotal1 + thisDayExp;
                                //    }
                                //    //adding to week 2 total
                                //    else
                                //    {
                                //        regularTotal2 = regularTotal2 + thisDayExp;
                                //        totalTotal2 = totalTotal2 + thisDayExp;
                                //    }
                                //}
                            }
                            else
                            {
                                regular.Add("0.00");
                                //holiday.Add("0.00");
                                //leave.Add("0.00");
                                //total.Add("0.00");
                            }
                            //caculating total hours and OT hours for week 1
                            if (regular.Count == 7)
                            {
                                ////if hours are grater than 44 per week, consider as OT
                                //ot1 = totalTotal1 > 44 ? totalTotal1 - 44 : 0;
                                //totalTotal1 = totalTotal1 > 44 ? 44 : totalTotal1;


                                //calculating summary of all users
                                i++;
                                summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + regularTotal1).ToString("0.00");
                                //i++;
                                //summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + ot1).ToString("0.00");

                                regular.Add(Convert.ToDouble(regularTotal1).ToString("0.00"));
                                //holiday.Add(Convert.ToDouble(holidayTotal1).ToString("0.00"));
                                //leave.Add(Convert.ToDouble(leaveTotal1).ToString("0.00"));
                                //total.Add(Convert.ToDouble((totalTotal1 > 44 ? 44 : totalTotal1)).ToString("0.00"));

                                //regular.Add("-");
                                //holiday.Add("-");
                                //leave.Add("-");
                                //total.Add(Convert.ToDouble(ot1).ToString("0.00"));
                            }
                            //caculating total hours and OT hours for week 2 and sum of w1 and w2
                            if (regular.Count == 15)
                            {
                                ////if hours are grater than 44 per week, consider as OT
                                //ot2 = totalTotal2 > 44 ? totalTotal2 - 44 : 0;
                                //totalTotal2 = totalTotal2 > 44 ? 44 : totalTotal2;

                                //calculating summary of all users
                                i++;
                                summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + regularTotal2).ToString("0.00");
                                //i++;
                                //summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + ot2).ToString("0.00");

                                regular.Add(Convert.ToDouble(regularTotal2).ToString("0.00"));
                                //holiday.Add(Convert.ToDouble(holidayTotal2).ToString("0.00"));
                                //leave.Add(Convert.ToDouble(leaveTotal2).ToString("0.00"));
                                //total.Add(Convert.ToDouble((totalTotal2 > 44 ? 44 : totalTotal2)).ToString("0.00"));

                                //regular.Add("-");
                                //holiday.Add("-");
                                //leave.Add("-");
                                //total.Add(Convert.ToDouble(ot2).ToString("0.00"));

                                regularTotal = regularTotal1 + regularTotal2;
                                //holidayTotal = holidayTotal1 + holidayTotal2;
                                //leaveTotal = leaveTotal1 + leaveTotal2;
                                //totalTotal = totalTotal1 + totalTotal2 > 88 ? 88 : totalTotal1 + totalTotal2;
                                //ot = ot1 + ot2;

                                //calculating summary of all users
                                i++;
                                summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + regularTotal).ToString("0.00");
                                //i++;
                                //summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + ot).ToString("0.00");

                                regular.Add(Convert.ToDouble(regularTotal).ToString("0.00"));
                                //holiday.Add(Convert.ToDouble(holidayTotal).ToString("0.00"));
                                //leave.Add(Convert.ToDouble(leaveTotal).ToString("0.00"));
                                //total.Add(Convert.ToDouble((totalTotal > 44 ? 44 : totalTotal)).ToString("0.00"));

                                //regular.Add("-");
                                //holiday.Add("-");
                                //leave.Add("-");
                                //total.Add(Convert.ToDouble(ot).ToString("0.00"));
                            }
                            i++;
                        }

                        userPayroll.Regular = regular;
                        //userPayroll.Holiday = holiday;
                        //userPayroll.Leave = leave;
                        //userPayroll.Total = total;

                        UserPayroll.Add(userPayroll);
                    }
                }

                data.Headers      = headers;
                data.Summary      = summary;
                data.UserPayrolls = UserPayroll;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(data);
        }
コード例 #2
0
        //Author        : Siddhant Chawade
        //Date          : 17th Feb 2020
        //Description   : To get payroll bi weekly report
        public PayrollBiWeekly GetPayrollBiWeekly(long?managerId, long?UserId, DateTime?fromDate, DateTime?toDate)
        {
            PayrollBiWeekly    data        = new PayrollBiWeekly();
            List <UserPayroll> UserPayroll = new List <UserPayroll>();

            try
            {
                //assigning dates if dates are null
                if (fromDate == null || toDate == null)
                {
                    toDate   = DateTime.Now.Date;
                    fromDate = DateTime.Now.AddDays(-13).Date;
                }

                //list of summary of all users
                List <string> summary = new List <string>();
                //summary.Add("Summary of All Users");
                for (int i = 1; i <= 23; i++)
                {
                    summary.Add("0.00");
                }

                //list of headers
                List <string> headers = new List <string>();
                //headers.Add("First Name");
                //headers.Add("Last Name");
                headers.Add("Time Type");

                //to add dates in headers
                List <DateTime?> dates = new List <DateTime?>();
                while (fromDate <= toDate)
                {
                    if (dates.Count == 7)
                    {
                        headers.Add("Week Totals");
                        headers.Add("Regular Total");
                        headers.Add("OT Total");
                    }
                    dates.Add(fromDate);
                    headers.Add(Convert.ToDateTime(fromDate).ToString("yyyy-MM-dd"));
                    fromDate = Convert.ToDateTime(fromDate).AddDays(1);
                }

                //adding other columns in header
                headers.Add("Week Totals");
                headers.Add("Regular Total");
                headers.Add("OT Total");
                headers.Add("Bi-Week Total Hours");
                headers.Add("Bi-Week Regular Total");
                headers.Add("Bi-Week OT Total");

                //fetching list of users
                var users = _adminMethods.GetUsers().OrderBy(x => x.userName).ToList();
                data.Users = users.AsEnumerable().Select(x => new IBWUsers
                {
                    userId   = x.userId,
                    userName = x.userName + " " + x.aliasName
                }).ToList();

                var managers = users.Where(x => x.asRMCount > 0).ToList();
                data.ReportingManagers = managers.AsEnumerable().Select(x => new IBWUsers
                {
                    userId   = x.userId,
                    userName = x.userName + " " + x.aliasName
                }).ToList();

                //applying reporting manager filter
                if (managerId != null)
                {
                    users = users.Where(x => x.reportingManagerId == managerId).ToList();
                }

                //applying user filter
                if (UserId != null)
                {
                    users = users.Where(x => x.userId == UserId).ToList();
                }

                //fetching list of approved timesheets of all users
                var hours = _schedulingDB.sp_get_user_timesheet().Where(x => x.isApproved == true).ToList();
                //fetching the list of holidays
                var holidays = _adminMethods.GetHolidays();
                //fetching the list of leaves
                var leaves = _adminDB.GetLeaveRequests().ToList();
                if (users != null && users.Count > 0)
                {
                    foreach (var user in users)
                    {
                        UserPayroll userPayroll = new UserPayroll();

                        userPayroll.UserId    = user.userId;
                        userPayroll.FirstName = user.userName;
                        userPayroll.LastName  = user.aliasName;
                        //list of regular hours
                        List <string> regular = new List <string>();
                        //list of holiday hours
                        List <string> holiday = new List <string>();
                        //list of leave hours
                        List <string> leave = new List <string>();
                        //list of total hours
                        List <string> total = new List <string>();

                        //variables for calculating totals
                        double?regularTotal  = 0.00;
                        double?regularTotal1 = 0.00;
                        double?regularTotal2 = 0.00;

                        double?holidayTotal  = 0.00;
                        double?holidayTotal1 = 0.00;
                        double?holidayTotal2 = 0.00;

                        double?leaveTotal  = 0.00;
                        double?leaveTotal1 = 0.00;
                        double?leaveTotal2 = 0.00;

                        double?totalTotal  = 0.00;
                        double?totalTotal1 = 0.00;
                        double?totalTotal2 = 0.00;

                        double?ot  = 0.00;
                        double?ot1 = 0.00;
                        double?ot2 = 0.00;

                        regular.Add("Regular Hours");
                        holiday.Add("Statutory Holiday");
                        leave.Add("Leave");
                        total.Add("Total");

                        int i = 0;
                        foreach (var date in dates)
                        {
                            bool isHoliday = false;
                            bool isLeave   = false;
                            isHoliday = holidays.Where(x => x.holidayDate == date).ToList().Count > 0 ? true : false;
                            isLeave   = leaves.Where(x => x.int_created_by == user.userId && x.is_approved == true && ((x.dt_from_date == date && x.dt_to_date == null) || (x.dt_from_date <= date && x.dt_to_date != null && x.dt_to_date >= date))).ToList().Count > 0 ? true : false;

                            double?thisDayHours = 0;
                            //getting list of approved timesheets for current date
                            var currentDayHours = hours.Where(x => x.userId == user.userId && Convert.ToDateTime(x.completionDate) == date).ToList();
                            if (currentDayHours != null && currentDayHours.Count > 0)
                            {
                                //calculating sum of worked hours
                                thisDayHours = currentDayHours.Sum(x => Convert.ToDouble(x.workedHours));

                                //calculating summary of all users
                                summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + thisDayHours).ToString("0.00");

                                //adding to holiday list if current date is a holiday
                                if (isHoliday)
                                {
                                    double?holidayHours = Convert.ToDouble(user.hoursPerDay);
                                    regular.Add(Convert.ToDouble(thisDayHours).ToString("0.00"));
                                    holiday.Add(Convert.ToDouble(holidayHours).ToString("0.00"));
                                    leave.Add("0.00");
                                    total.Add(Convert.ToDouble(thisDayHours).ToString("0.00"));
                                    //adding to week 1 total
                                    if (regular.Count <= 8)
                                    {
                                        regularTotal1 = regularTotal1 + thisDayHours;
                                        holidayTotal1 = holidayTotal1 + holidayHours;
                                        totalTotal1   = totalTotal1 + thisDayHours;
                                    }
                                    //adding to week 2 total
                                    else
                                    {
                                        regularTotal2 = regularTotal2 + thisDayHours;
                                        holidayTotal2 = holidayTotal2 + holidayHours;
                                        totalTotal2   = totalTotal2 + thisDayHours;
                                    }
                                }
                                //adding to leave list if current date is a leave
                                else if (isLeave)
                                {
                                    var    leaveToday = leaves.Where(x => x.int_created_by == user.userId && x.is_approved == true && ((x.dt_from_date == date && x.dt_to_date == null) || (x.dt_from_date <= date && x.dt_to_date != null && x.dt_to_date >= date))).FirstOrDefault();
                                    double?LeaveHours = Convert.ToDouble(leaveToday.int_duration);
                                    if (leaveToday.vc_absence_type == "Multiple Days")
                                    {
                                        var numOfDays = (Convert.ToDateTime(leaveToday.dt_to_date) - Convert.ToDateTime(leaveToday.dt_from_date)).TotalDays + 1;
                                        LeaveHours = LeaveHours / numOfDays;
                                    }
                                    regular.Add(Convert.ToDouble(thisDayHours).ToString("0.00"));
                                    holiday.Add("0.00");
                                    leave.Add(Convert.ToDouble(LeaveHours).ToString("0.00"));
                                    total.Add(Convert.ToDouble(thisDayHours).ToString("0.00"));
                                    //adding to week 1 total
                                    if (regular.Count <= 8)
                                    {
                                        regularTotal1 = regularTotal1 + thisDayHours;
                                        leaveTotal1   = leaveTotal1 + LeaveHours;
                                        totalTotal1   = totalTotal1 + thisDayHours;
                                    }
                                    //adding to week 2 total
                                    else
                                    {
                                        regularTotal2 = regularTotal2 + thisDayHours;
                                        leaveTotal2   = leaveTotal2 + LeaveHours;
                                        totalTotal2   = totalTotal2 + thisDayHours;
                                    }
                                }
                                //adding to regular list if current date is neither a holiday nor a leave
                                else
                                {
                                    regular.Add(Convert.ToDouble(thisDayHours).ToString("0.00"));
                                    holiday.Add("0.00");
                                    leave.Add("0.00");
                                    total.Add(Convert.ToDouble(thisDayHours).ToString("0.00"));
                                    //adding to week 1 total
                                    if (regular.Count <= 8)
                                    {
                                        regularTotal1 = regularTotal1 + thisDayHours;
                                        totalTotal1   = totalTotal1 + thisDayHours;
                                    }
                                    //adding to week 2 total
                                    else
                                    {
                                        regularTotal2 = regularTotal2 + thisDayHours;
                                        totalTotal2   = totalTotal2 + thisDayHours;
                                    }
                                }
                            }
                            else
                            {
                                regular.Add("0.00");
                                holiday.Add("0.00");
                                leave.Add("0.00");
                                total.Add("0.00");
                            }
                            //caculating total hours and OT hours for week 1
                            if (regular.Count == 8)
                            {
                                //calculating summary of all users
                                i++;
                                summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + regularTotal1 + holidayTotal1 + leaveTotal1).ToString("0.00");

                                regular.Add(Convert.ToDouble(regularTotal1).ToString("0.00"));
                                holiday.Add(Convert.ToDouble(holidayTotal1).ToString("0.00"));
                                leave.Add(Convert.ToDouble(leaveTotal1).ToString("0.00"));
                                total.Add(Convert.ToDouble(regularTotal1 + holidayTotal1 + leaveTotal1).ToString("0.00"));

                                //if hours are grater than 44 per week, consider as OT
                                ot1         = totalTotal1 > 44 ? totalTotal1 - 44 : 0;
                                totalTotal1 = totalTotal1 > 44 ? 44 : totalTotal1;

                                i++;
                                summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + (regularTotal1 > 44 ? 44 : regularTotal1) + holidayTotal1 + leaveTotal1).ToString("0.00");

                                regular.Add(Convert.ToDouble(regularTotal1 > 44 ? 44 : regularTotal1).ToString("0.00"));
                                holiday.Add(Convert.ToDouble(holidayTotal1).ToString("0.00"));
                                leave.Add(Convert.ToDouble(leaveTotal1).ToString("0.00"));
                                total.Add(Convert.ToDouble((regularTotal1 > 44 ? 44 : regularTotal1) + holidayTotal1 + leaveTotal1).ToString("0.00"));

                                i++;
                                summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + ot1).ToString("0.00");

                                regular.Add(Convert.ToDouble(regularTotal1 > 44 ? regularTotal1 - 44 : 0).ToString("0.00"));
                                holiday.Add("-");
                                leave.Add("-");
                                total.Add(Convert.ToDouble(ot1).ToString("0.00"));
                            }
                            //caculating total hours and OT hours for week 2 and sum of w1 and w2
                            if (regular.Count == 18)
                            {
                                //calculating summary of all users
                                i++;
                                summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + regularTotal2 + holidayTotal2 + leaveTotal2).ToString("0.00");

                                regular.Add(Convert.ToDouble(regularTotal2).ToString("0.00"));
                                holiday.Add(Convert.ToDouble(holidayTotal2).ToString("0.00"));
                                leave.Add(Convert.ToDouble(leaveTotal2).ToString("0.00"));
                                total.Add(Convert.ToDouble(regularTotal2 + holidayTotal2 + leaveTotal2).ToString("0.00"));

                                //if hours are grater than 44 per week, consider as OT
                                ot2 = totalTotal2 > 44 ? totalTotal2 - 44 : 0;
                                //totalTotal2 = totalTotal2 > 44 ? 44 : totalTotal2;

                                i++;
                                summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + (regularTotal2 > 44 ? 44 : regularTotal2) + holidayTotal2 + leaveTotal2).ToString("0.00");

                                regular.Add(Convert.ToDouble(regularTotal2 > 44 ? 44 : regularTotal2).ToString("0.00"));
                                holiday.Add(Convert.ToDouble(holidayTotal2).ToString("0.00"));
                                leave.Add(Convert.ToDouble(leaveTotal2).ToString("0.00"));
                                total.Add(Convert.ToDouble((regularTotal2 > 44 ? 44 : regularTotal2) + holidayTotal2 + leaveTotal2).ToString("0.00"));

                                i++;
                                summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + ot2).ToString("0.00");

                                regular.Add(Convert.ToDouble(regularTotal2 > 44 ? regularTotal2 - 44 : 0).ToString("0.00"));
                                holiday.Add("-");
                                leave.Add("-");
                                total.Add(Convert.ToDouble(ot2).ToString("0.00"));

                                //calculating summary of all users
                                i++;
                                summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + regularTotal1 + regularTotal2 + holidayTotal1 + holidayTotal2 + leaveTotal1 + leaveTotal2).ToString("0.00");

                                regular.Add(Convert.ToDouble(regularTotal1 + regularTotal2).ToString("0.00"));
                                holiday.Add(Convert.ToDouble(holidayTotal1 + holidayTotal2).ToString("0.00"));
                                leave.Add(Convert.ToDouble(leaveTotal1 + leaveTotal2).ToString("0.00"));
                                total.Add(Convert.ToDouble(regularTotal1 + regularTotal2 + holidayTotal1 + holidayTotal2 + leaveTotal1 + leaveTotal2).ToString("0.00"));

                                regularTotal = regularTotal1 + regularTotal2;
                                holidayTotal = holidayTotal1 + holidayTotal2;
                                leaveTotal   = leaveTotal1 + leaveTotal2;
                                totalTotal   = totalTotal1 + totalTotal2 > 88 ? 88 : totalTotal1 + totalTotal2;
                                ot           = ot1 + ot2;

                                i++;
                                summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + ((regularTotal1 > 44 ? 44 : regularTotal1) + (regularTotal2 > 44 ? 44 : regularTotal2)) + holidayTotal + leaveTotal).ToString("0.00");

                                regularTotal = (regularTotal1 > 44 ? 44 : regularTotal1) + (regularTotal2 > 44 ? 44 : regularTotal2);

                                regular.Add(Convert.ToDouble((regularTotal1 > 44 ? 44 : regularTotal1) + (regularTotal2 > 44 ? 44 : regularTotal2) > 88 ? 88 : regularTotal).ToString("0.00"));
                                holiday.Add(Convert.ToDouble(holidayTotal).ToString("0.00"));
                                leave.Add(Convert.ToDouble(leaveTotal).ToString("0.00"));
                                total.Add(Convert.ToDouble(regularTotal + holidayTotal + leaveTotal).ToString("0.00"));

                                i++;
                                summary[i] = Convert.ToDouble(Convert.ToDouble(summary[i]) + ot).ToString("0.00");

                                regular.Add(Convert.ToDouble(ot).ToString("0.00"));
                                holiday.Add("-");
                                leave.Add("-");
                                total.Add(Convert.ToDouble(ot).ToString("0.00"));
                            }
                            i++;
                        }

                        userPayroll.Regular = regular;
                        userPayroll.Holiday = holiday;
                        userPayroll.Leave   = leave;
                        userPayroll.Total   = total;

                        UserPayroll.Add(userPayroll);
                    }
                }

                data.Headers      = headers;
                data.Summary      = summary;
                data.UserPayrolls = UserPayroll;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(data);
        }