Exemple #1
0
        public async Task <ActionResult> Edit([Bind(Include = "Id,Branches_Id,Timestamp,SaleInvoiceItems_Id,SessionHours,Review,InternalNotes,Deleted,Tutor_UserAccounts_Id,HourlyRates_Rate,TravelCost,TutorTravelCost,Adjustment,PayrollPaymentItems_Id")] LessonSessionsModels lessonSessionsModels)
        {
            if (ModelState.IsValid)
            {
                var current_data = await db.LessonSessions.FindAsync(lessonSessionsModels.Id);

                current_data.HourlyRates_Rate = lessonSessionsModels.HourlyRates_Rate;
                current_data.TravelCost       = lessonSessionsModels.TravelCost;
                current_data.TutorTravelCost  = lessonSessionsModels.TutorTravelCost;
                current_data.Review           = lessonSessionsModels.Review;
                current_data.InternalNotes    = lessonSessionsModels.InternalNotes;
                db.Entry(current_data).State  = EntityState.Modified;

                if (current_data.PayrollPaymentItems_Id.HasValue)
                {
                    var ppi = await db.PayrollPaymentItems.FindAsync(current_data.PayrollPaymentItems_Id);

                    ppi.HourlyRate      = lessonSessionsModels.HourlyRates_Rate;
                    ppi.Amount          = (ppi.Hour * lessonSessionsModels.HourlyRates_Rate) + ppi.TutorTravelCost;
                    db.Entry(ppi).State = EntityState.Modified;
                }

                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(lessonSessionsModels));
        }
Exemple #2
0
        public async Task <ActionResult> Edit(Guid?id)
        {
            Permission p    = new Permission();
            bool       auth = p.IsGranted(User.Identity.Name, this.ControllerContext.RouteData.Values["controller"].ToString() + "_" + this.ControllerContext.RouteData.Values["action"].ToString());

            if (!auth)
            {
                return(new ViewResult()
                {
                    ViewName = "Unauthorized"
                });
            }
            else
            {
                LessonSessionsModels lessonSessionsModels = await db.LessonSessions.Where(x => x.Id == id).FirstOrDefaultAsync();

                return(View(lessonSessionsModels));
            }
        }
Exemple #3
0
        public ActionResult Create([Bind(Include = "Branches_Id,Timestamp,Tutor_UserAccounts_Id,SessionHours,Review,InternalNotes")] LessonSessionsModels lessonSessionsModels, string Items, string Description, bool ChangeSchedule, bool Waive)
        {
            if (ModelState.IsValid)
            {
                var  hourly_rate       = db.HourlyRates.Where(x => x.UserAccounts_Id == lessonSessionsModels.Tutor_UserAccounts_Id).ToList();
                Guid ppi_id            = Guid.NewGuid();
                int  tutor_travel_cost = 0;

                #region Lesson Sessions Add
                List <LessonSessionsDetails> details = JsonConvert.DeserializeObject <List <LessonSessionsDetails> >(Items);
                foreach (var item in details)
                {
                    var sale_invoice_item      = db.SaleInvoiceItems.Where(x => x.Id == item.sale_invoice_item_id).FirstOrDefault();
                    LessonSessionsModels model = new LessonSessionsModels
                    {
                        Id                     = Guid.NewGuid(),
                        Branches_Id            = lessonSessionsModels.Branches_Id.Value,
                        Timestamp              = lessonSessionsModels.Timestamp, //TimeZoneInfo.ConvertTimeToUtc(lessonSessionsModels.Timestamp),
                        SaleInvoiceItems_Id    = item.sale_invoice_item_id,
                        SessionHours           = lessonSessionsModels.SessionHours,
                        Review                 = item.review,         //lessonSessionsModels.Review;
                        InternalNotes          = item.internal_notes, //lessonSessionsModels.InternalNotes;
                        Deleted                = false,
                        Tutor_UserAccounts_Id  = lessonSessionsModels.Tutor_UserAccounts_Id,
                        TravelCost             = ChangeSchedule ? 0 : (int)Math.Ceiling((sale_invoice_item.TravelCost / sale_invoice_item.SessionHours.Value) * lessonSessionsModels.SessionHours),
                        TutorTravelCost        = ChangeSchedule ? 0 : (int)Math.Ceiling((sale_invoice_item.TutorTravelCost / sale_invoice_item.SessionHours.Value) * lessonSessionsModels.SessionHours),
                        Adjustment             = 0,
                        PayrollPaymentItems_Id = ChangeSchedule ? (Guid?)null : ppi_id,
                        IsScheduleChange       = ChangeSchedule,
                        IsWaiveTutorFee        = Waive
                    };

                    if (hourly_rate.Count == 0)
                    {
                        model.HourlyRates_Rate = 0; //this tutor not found in hourly rate
                    }
                    else
                    {
                        foreach (var subitem in hourly_rate)
                        {
                            decimal rate_used = subitem.FullTimeTutorPayrate > 0 ? 0 : subitem.Rate;

                            model.HourlyRates_Rate = rate_used / details.Count;                         //use tutor rate with null package
                            if (subitem.LessonPackages_Id == sale_invoice_item.LessonPackages_Id.Value) //found tutor with exact package
                            {
                                model.HourlyRates_Rate = rate_used / details.Count;
                                break;
                            }
                        }
                    }
                    db.LessonSessions.Add(model);

                    sale_invoice_item.SessionHours_Remaining = sale_invoice_item.SessionHours_Remaining.Value - lessonSessionsModels.SessionHours;
                    db.Entry(sale_invoice_item).State        = EntityState.Modified;

                    tutor_travel_cost = model.TutorTravelCost;
                }
                #endregion

                if (ChangeSchedule)
                {
                    lessonSessionsModels.SessionHours = 0; //Change Schedule checked, set hours = 0
                }
                else
                {
                    #region Payroll Payment Items Add
                    PayrollPaymentItemsModels payrollPaymentItemsModels = new PayrollPaymentItemsModels
                    {
                        Id              = ppi_id,
                        Timestamp       = lessonSessionsModels.Timestamp,
                        Description     = Description,
                        Hour            = lessonSessionsModels.SessionHours,
                        UserAccounts_Id = lessonSessionsModels.Tutor_UserAccounts_Id,
                        Branches_Id     = lessonSessionsModels.Branches_Id
                    };

                    if (hourly_rate.Count == 0)
                    {
                        payrollPaymentItemsModels.HourlyRate = 0; //this tutor not found in hourly rate
                    }
                    else
                    {
                        foreach (var rate in hourly_rate)
                        {
                            decimal rate_used = rate.FullTimeTutorPayrate > 0 ? 0 : rate.Rate;

                            payrollPaymentItemsModels.HourlyRate = rate_used;                                                            //use tutor rate with null branch
                            if (lessonSessionsModels.Branches_Id.HasValue && rate.Branches_Id == lessonSessionsModels.Branches_Id.Value) //found tutor with exact branch
                            {
                                payrollPaymentItemsModels.HourlyRate = rate_used;
                                break;
                            }
                        }
                    }

                    if (Waive)
                    {
                        payrollPaymentItemsModels.Hour = 0;
                    }                                                  //if Waives Tutor Fee checked, Payment Hour set to 0

                    payrollPaymentItemsModels.TutorTravelCost = tutor_travel_cost;
                    payrollPaymentItemsModels.Amount          = (payrollPaymentItemsModels.Hour * payrollPaymentItemsModels.HourlyRate) + tutor_travel_cost;
                    db.PayrollPaymentItems.Add(payrollPaymentItemsModels);
                    #endregion
                }

                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            var users = (from u in db.User
                         join ur in db.UserRole on u.Id equals ur.UserId
                         join r in db.Role on ur.RoleId equals r.Id
                         where u.Active == true && r.Name == "Tutor" || r.Name == "Student"
                         orderby u.Firstname
                         select new { u, r }).ToList();
            List <object> tutor_list   = new List <object>();
            List <object> student_list = new List <object>();
            foreach (var item in users)
            {
                if (item.r.Name == "Tutor")
                {
                    tutor_list.Add(new
                    {
                        Id   = item.u.Id,
                        Name = item.u.Firstname + " " + item.u.Middlename + " " + item.u.Lastname
                    });
                }
                else
                {
                    student_list.Add(new
                    {
                        Id   = item.u.Id,
                        Name = item.u.Firstname + " " + item.u.Middlename + " " + item.u.Lastname
                    });
                }
            }
            ViewBag.listTutor   = new SelectList(tutor_list, "Id", "Name");
            ViewBag.listStudent = new SelectList(student_list, "Id", "Name");
            ViewBag.listBranch  = new SelectList(db.Branches.Where(x => x.Active == true).OrderBy(x => x.Name).ToList(), "Id", "Name");

            return(View(lessonSessionsModels));
        }