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)); }
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)); } }
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)); }