Exemplo n.º 1
0
        public ActionResult AllReport(ReportsViewmodel reportmodel)
        {
            List <IndivisualList> indivisualLists = new List <IndivisualList>();
            DateTime start         = DateTime.Parse(reportmodel.DateRange.Split('-')[0]);
            DateTime end           = DateTime.Parse(reportmodel.DateRange.Split('-')[1]);
            var      waiters       = db.Waiters.ToList();
            var      waworkmonthly = db.WaiterWorks.Where(p => DbFunctions.TruncateTime(p.StartAt) >= DbFunctions.TruncateTime(start) &&
                                                          DbFunctions.TruncateTime(p.StartAt) <= DbFunctions.TruncateTime(end)).ToList();

            foreach (var wa in waiters)
            {
                double watotalbreke = 0;

                var inwaworkmonthly = waworkmonthly.Where(p => p.WaiterID == wa.WaiterID).ToList();

                foreach (var wawo in inwaworkmonthly)
                {
                    if (wawo.WaiterBreaks != null)
                    {
                        watotalbreke += wawo.WaiterBreaks.Where(c => c.EndAt != null && c.StartAt.Month != DateTime.Now.Month && c.StartAt.Year != DateTime.Now.Year).Sum(p => (p.EndAt.Value - p.StartAt).TotalMinutes);
                    }
                }
                var totalminmonthly = inwaworkmonthly.Sum(p => p.TotalMin);

                if (wa.MaxWorkingHours != 0)
                {
                    if ((totalminmonthly - watotalbreke) > (wa.MaxWorkingHours * 60))
                    {
                        var            TotalMin       = wa.MaxWorkingHours * 60;
                        var            TotalExtaMin   = totalminmonthly - watotalbreke - (wa.MaxWorkingHours * 60);
                        var            Total_Wage     = Convert.ToDecimal(TotalMin / 60) * wa.Wage;
                        var            ExtraTimeWage  = Convert.ToDecimal(TotalExtaMin / 60) * wa.WageafterMaxHours;
                        IndivisualList indivisualList = new IndivisualList
                        {
                            ID             = wa.WaiterID,
                            Name           = wa.FirstName + " " + wa.LastName,
                            TotalWage      = Total_Wage,
                            TotalExtra     = TotalExtaMin,
                            TotalHours     = TotalMin,
                            TotalExtraWage = ExtraTimeWage
                        };
                        indivisualLists.Add(indivisualList);
                    }
                    else
                    {
                        var            TotalMin       = totalminmonthly - watotalbreke;
                        var            Total_Wage     = Convert.ToDecimal(TotalMin / 60) * wa.Wage;
                        IndivisualList indivisualList = new IndivisualList
                        {
                            ID         = wa.WaiterID,
                            Name       = wa.FirstName + " " + wa.LastName,
                            TotalWage  = Total_Wage,
                            TotalHours = TotalMin,
                        };
                        indivisualLists.Add(indivisualList);
                    }
                }
            }
            return(PartialView("ReportList", indivisualLists));
        }
 public ViewReports()
 {
     InitializeComponent();
     BindingContext = new ReportsViewmodel();
 }
Exemplo n.º 3
0
        public ActionResult IndivisualReport(ReportsViewmodel reportmodel)
        {
            IndivisualReportViewModel indivisualReportViewModel = new IndivisualReportViewModel();
            List <IndivisualList>     indivisualLists           = new List <IndivisualList>();
            DateTime start  = DateTime.Parse(reportmodel.DateRange2.Split('-')[0]);
            DateTime end    = DateTime.Parse(reportmodel.DateRange2.Split('-')[1]);
            var      waiter = db.Waiters.Include(c => c.WaiterWorks).SingleOrDefault(p => p.WaiterID == reportmodel.WaiterID);

            indivisualReportViewModel.ID   = waiter.WaiterID;
            indivisualReportViewModel.Name = waiter.FirstName + " " + waiter.LastName;
            var waworkmonthly = waiter.WaiterWorks.Where(p => DbFunctions.TruncateTime(p.StartAt) >= DbFunctions.TruncateTime(start) &&
                                                         DbFunctions.TruncateTime(p.StartAt) <= DbFunctions.TruncateTime(end)).ToList();

            foreach (var item in waworkmonthly)
            {
                indivisualLists.Add(new IndivisualList
                {
                    Name       = item.Waiter.FirstName + " " + item.Waiter.LastName,
                    TotalHours = item.TotalMin,
                    TotalBreak = item.WaiterBreaks.Sum(p => (p.EndAt.Value - p.StartAt).TotalMinutes),
                    StartAt    = item.StartAt,
                    EndAt      = item.EndAt.Value,
                });
            }

            double watotalbreke = 0;


            foreach (var wawo in waworkmonthly)
            {
                if (wawo.WaiterBreaks != null)
                {
                    watotalbreke += wawo.WaiterBreaks.Where(c => c.EndAt != null && c.StartAt.Month != DateTime.Now.Month && c.StartAt.Year != DateTime.Now.Year).Sum(p => (p.EndAt.Value - p.StartAt).TotalMinutes);
                }
            }
            var totalminmonthly = waworkmonthly.Sum(p => p.TotalMin);

            if (waiter.MaxWorkingHours != 0)
            {
                if ((totalminmonthly - watotalbreke) > (waiter.MaxWorkingHours * 60))
                {
                    var TotalMin      = waiter.MaxWorkingHours * 60;
                    var TotalExtaMin  = totalminmonthly - watotalbreke - (waiter.MaxWorkingHours * 60);
                    var Total_Wage    = Convert.ToDecimal(TotalMin / 60) * waiter.Wage;
                    var ExtraTimeWage = Convert.ToDecimal(TotalExtaMin / 60) * waiter.WageafterMaxHours;


                    indivisualReportViewModel.TotalWage      = Total_Wage;
                    indivisualReportViewModel.TotalExtra     = TotalExtaMin;
                    indivisualReportViewModel.TotalHours     = TotalMin;
                    indivisualReportViewModel.TotalExtraWage = ExtraTimeWage;
                }
                else
                {
                    var TotalMin   = totalminmonthly - watotalbreke;
                    var Total_Wage = Convert.ToDecimal(TotalMin / 60) * waiter.Wage;

                    indivisualReportViewModel.TotalWage  = Total_Wage;
                    indivisualReportViewModel.TotalHours = TotalMin;
                }
            }
            indivisualReportViewModel.IndivisualLists = indivisualLists;
            return(PartialView("IndivisualReportList", indivisualReportViewModel));
        }