Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #3
0
        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));
        }
Example #4
0
        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));
            }
        }