public async Task <ActionResult> TutorCreate([Bind(Include = "Id,Tutor_UserAccounts_Id,DayOfWeek,StartTime,EndTime,IsActive,Notes")] TutorSchedulesModels tutorSchedulesModels) { string message_error = ""; var start = new DateTime(1970, 01, 01, tutorSchedulesModels.StartTime.Hour, tutorSchedulesModels.StartTime.Minute, 0); var end = new DateTime(1970, 01, 01, tutorSchedulesModels.EndTime.Hour, tutorSchedulesModels.EndTime.Minute, 0); var isExist = await db.TutorSchedules .Where(x => x.Tutor_UserAccounts_Id == tutorSchedulesModels.Tutor_UserAccounts_Id && x.DayOfWeek == tutorSchedulesModels.DayOfWeek && x.StartTime == start && x.EndTime == end).FirstOrDefaultAsync(); if (isExist != null) { var _tutor = await db.User.FindAsync(tutorSchedulesModels.Tutor_UserAccounts_Id); string tutor_name = _tutor.Firstname + " " + _tutor.Middlename + " " + _tutor.Lastname; ModelState.AddModelError("Exist", "This schedule already exist ( " + string.Format("{0}: {1}, {2:HH:mm} - {3:HH:mm}", tutor_name, tutorSchedulesModels.DayOfWeek, start, end) + " )."); message_error = "duplicate_schedule"; ViewBag.Error = message_error; } if (tutorSchedulesModels.StartTime.Hour > tutorSchedulesModels.EndTime.Hour || (tutorSchedulesModels.StartTime.Hour == tutorSchedulesModels.EndTime.Hour && tutorSchedulesModels.StartTime.Minute > tutorSchedulesModels.EndTime.Minute)) { ModelState.AddModelError("Schedule", "The Start Time ( " + string.Format("{0:HH:mm}", tutorSchedulesModels.StartTime) + " ) field cannot greater than End Time ( " + string.Format("{0:HH:mm}", tutorSchedulesModels.EndTime) + " ) field."); message_error = "invalid_time"; ViewBag.Error = message_error; } if (ModelState.IsValid) { tutorSchedulesModels.Id = Guid.NewGuid(); tutorSchedulesModels.StartTime = start; tutorSchedulesModels.EndTime = end; tutorSchedulesModels.IsActive = true; db.TutorSchedules.Add(tutorSchedulesModels); await db.SaveChangesAsync(); return(RedirectToAction("TutorCreate", new { id = tutorSchedulesModels.Tutor_UserAccounts_Id, dow = (int)tutorSchedulesModels.DayOfWeek, start = string.Format("{0:HH_mm}", start), end = string.Format("{0:HH_mm}", end) })); //return RedirectToAction("TutorIndex"); } var tutor = await db.User.FindAsync(tutorSchedulesModels.Tutor_UserAccounts_Id); ViewBag.TutorId = tutor == null ? "" : tutor.Id; ViewBag.TutorName = tutor == null ? "" : tutor.Firstname + " " + tutor.Middlename + " " + tutor.Lastname; ViewBag.StartTime = string.Format("{0:HH:mm}", start); ViewBag.EndTime = string.Format("{0:HH:mm}", end); return(View(tutorSchedulesModels)); }
public async Task <ActionResult> TutorEdit([Bind(Include = "Id,Tutor_UserAccounts_Id,DayOfWeek,StartTime,EndTime,IsActive,Notes")] TutorSchedulesModels tutorSchedulesModels) { var start = new DateTime(1970, 01, 01, tutorSchedulesModels.StartTime.Hour, tutorSchedulesModels.StartTime.Minute, 0); var end = new DateTime(1970, 01, 01, tutorSchedulesModels.EndTime.Hour, tutorSchedulesModels.EndTime.Minute, 0); var isExist = await db.TutorSchedules .Where(x => x.Id != tutorSchedulesModels.Id && x.Tutor_UserAccounts_Id == tutorSchedulesModels.Tutor_UserAccounts_Id && x.DayOfWeek == tutorSchedulesModels.DayOfWeek && x.StartTime == start && x.EndTime == end).FirstOrDefaultAsync(); if (isExist != null) { var _tutor = await db.User.FindAsync(tutorSchedulesModels.Tutor_UserAccounts_Id); string tutor_name = _tutor.Firstname + " " + _tutor.Middlename + " " + _tutor.Lastname; ModelState.AddModelError("Exist", "This schedule already exist ( " + string.Format("{0}: {1}, {2:HH:mm} - {3:HH:mm}", tutor_name, tutorSchedulesModels.DayOfWeek, start, end) + " )."); } if (tutorSchedulesModels.StartTime.Hour > tutorSchedulesModels.EndTime.Hour || (tutorSchedulesModels.StartTime.Hour == tutorSchedulesModels.EndTime.Hour && tutorSchedulesModels.StartTime.Minute > tutorSchedulesModels.EndTime.Minute)) { ModelState.AddModelError("Schedule", "The Start Time ( " + string.Format("{0:HH:mm}", tutorSchedulesModels.StartTime) + " ) field cannot greater than End Time ( " + string.Format("{0:HH:mm}", tutorSchedulesModels.EndTime) + " ) field."); } if (ModelState.IsValid) { var current_data = await db.TutorSchedules.FindAsync(tutorSchedulesModels.Id); current_data.Tutor_UserAccounts_Id = tutorSchedulesModels.Tutor_UserAccounts_Id; current_data.DayOfWeek = tutorSchedulesModels.DayOfWeek; current_data.StartTime = start; current_data.EndTime = end; current_data.IsActive = tutorSchedulesModels.IsActive; current_data.Notes = tutorSchedulesModels.Notes; db.Entry(current_data).State = EntityState.Modified; await db.SaveChangesAsync(); return(RedirectToAction("TutorIndex")); } var tutor = await db.User.FindAsync(tutorSchedulesModels.Tutor_UserAccounts_Id); ViewBag.TutorName = tutor.Firstname + " " + tutor.Middlename + " " + tutor.Lastname; return(View(tutorSchedulesModels)); }
public async Task <HttpResponseMessage> ScheduleAdd(TutorScheduleApiModels model) { string user_id = db.User.Where(x => x.UserName == model.Username).FirstOrDefault().Id; DayOfWeekEnum dow = (DayOfWeekEnum)Enum.Parse(typeof(DayOfWeekEnum), model.Day); DateTime _start = DateTime.Parse(model.Start); DateTime start = new DateTime(1970, 1, 1, _start.Hour, _start.Minute, 0); DateTime _end = DateTime.Parse(model.End); DateTime end = new DateTime(1970, 1, 1, _end.Hour, _end.Minute, 0); CommonRequestModels data = new CommonRequestModels(); var isExist = await db.TutorSchedules .Where(x => x.Tutor_UserAccounts_Id == user_id && x.DayOfWeek == dow && x.StartTime == start && x.EndTime == end).FirstOrDefaultAsync(); if (isExist != null) { data.Message = "This schedule already exist."; } else { if (start.Hour > end.Hour || (start.Hour == end.Hour && start.Minute > end.Minute)) { data.Message = "The Start Time cannot greater than End Time"; } } if (string.IsNullOrEmpty(data.Message)) { TutorSchedulesModels tutorSchedulesModels = new TutorSchedulesModels { Id = Guid.NewGuid(), Tutor_UserAccounts_Id = user_id, DayOfWeek = dow, StartTime = start, EndTime = end, IsActive = true, Notes = model.Notes }; db.TutorSchedules.Add(tutorSchedulesModels); await db.SaveChangesAsync(); } return(Request.CreateResponse(HttpStatusCode.OK, data)); }
public async Task <ActionResult> TutorEdit(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 { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } TutorSchedulesModels tutorSchedulesModels = await db.TutorSchedules.FindAsync(id); if (tutorSchedulesModels == null) { return(HttpNotFound()); } #region CHECK FULL ACCESS var setting_fafts = await db.Settings.FindAsync(SettingsValue.GUID_FullAccessForTutorSchedule); List <string> role_for_tutor_schedule = new List <string>(); if (!string.IsNullOrEmpty(setting_fafts.Value_String)) { string[] ids = setting_fafts.Value_String.Split(','); foreach (var _id in ids) { role_for_tutor_schedule.Add(_id); } } var user_role = await(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.UserName == User.Identity.Name select new { r }).ToListAsync(); bool isFullAccess = false; if (role_for_tutor_schedule.Count > 0) { foreach (var role in user_role) { if (isFullAccess) { break; } else { foreach (var a in role_for_tutor_schedule) { if (a == role.r.Id) { isFullAccess = true; break; } } } } } #endregion if (!isFullAccess) { var user_login = await db.User.Where(x => x.UserName.ToLower() == User.Identity.Name.ToLower()).FirstOrDefaultAsync(); ViewBag.LoginId = user_login.Id; ViewBag.LoginFullName = user_login.Firstname + " " + user_login.Middlename + " " + user_login.Lastname; } var tutor = await db.User.FindAsync(tutorSchedulesModels.Tutor_UserAccounts_Id); ViewBag.TutorName = tutor.Firstname + " " + tutor.Middlename + " " + tutor.Lastname; ViewBag.FullAccess = isFullAccess; return(View(tutorSchedulesModels)); } }