public async Task <ActionResult> SelectTiming(TutorSessionViewModel model) { if (model.StartDate != null && model.EndDate != null) { if (model.StartDate > model.EndDate) { ModelState.AddModelError("EndDate", "End date should be less than start date"); } TimeSpan diffResult = model.EndDate.GetValueOrDefault().Subtract(model.StartDate.GetValueOrDefault()); if (diffResult.Days > 14) { ModelState.AddModelError("EndDate", "End date should be two weeks of duration from start date"); } } if (ModelState.IsValid) { var SessionSchedules = new List <TutorSessionScheduleViewModel>(); var _user = await UserManager.FindByEmailAsync(User.Identity.Name); var _session = await _sessionService.GetSessionByIdAsync(model.Id); _session = _session == null ? new Sessions() : _session; model.CreatedBy = _session.CreatedBy; for (DateTime date = model.StartDate.GetValueOrDefault(); date.Date <= model.EndDate; date = date.AddDays(1)) { SessionSchedules.Add(new TutorSessionScheduleViewModel() { //Id UserId = _user.Id, SessionId = _session.Id, Timing = Utils.Common.GetTiming(), Day = date.DayOfWeek, SelectedDate = date });; } if (_session.SessionSchedule != null) { if (_session.SessionSchedule.Count > 0) { foreach (var schedule in SessionSchedules) { foreach (var _time in schedule.Timing) { var availTime = _session.SessionSchedule.FirstOrDefault(x => x.Time == _time.AvailabilityTime && x.Day == schedule.Day && x.SelectedDate == schedule.SelectedDate); if (availTime != null) { schedule.Id = availTime.Id; _time.Selected = true; schedule.Time = availTime.Time; } } } } } model.SessionSchedules = SessionSchedules; return(View("SelectTiming", model)); } model.Students = GetStudents(); return(View("Schedule", model)); }
public async Task <ActionResult> Schedule(TutorSessionViewModel model) { int insertedID = 0; if (ModelState.IsValid) { try { var sessionInfo = string.Empty; int DayTimeChecked = 0; if (model.SessionSchedules != null) { foreach (var schedule in model.SessionSchedules) { foreach (var time in schedule.Timing) { if (time.Selected) { DayTimeChecked += 1; sessionInfo += "<b>" + schedule.Day.ToString() + "</b> <b>" + time.Time + "</b> <b><br/>"; } } } } if (DayTimeChecked < 2) { ViewBag.success = "<ul><li><p style='color:red'>Validation ERROR: Please choose atleast 2+ Days/Times that you are available.</p></li></ul>"; model.Students = GetStudents(); return(View("Schedule", model)); } var message = "New Session has been scheduled."; if (model.Id > 0) { (bool success, TutorSessionViewModel data) = await _scheduleService.UpdateScheduleAsync(model); insertedID = data.Id; if (success == false) { ViewBag.success = "<ul><li><p style='color:red'>ERROR: Session Doesn't Exist.</p></li></ul>"; model.Students = GetStudents(); return(View("Schedule", model)); } message = "A scheduled session has been updated."; } else { (bool success, TutorSessionViewModel data) = await _scheduleService.CreateScheduleAsync(model); insertedID = data.Id; } var _subject = "Tutor Session Schedule Info - " + model.User.FirstName + " " + model.User.LastName + " | instanttutors.org"; var _body = "<p>Greetings,</p>"; _body += "<p>" + model.Title.ToUpper() + "</p>"; _body += "<p>Tutor: " + model.User.FirstName + " " + model.User.LastName + " is requesting a session for the following days</p>"; _body += "<p><span style='text - decoration: underline;'>AVAILABLE ON :</span></p>"; _body += "<p>" + sessionInfo + "</p>"; _body += "<p>if you would like to approve it click the below link.</p>"; _body += "<p>"; _body += "<a href='" + ConfigurationManager.AppSettings["SiteURL"] + "?action=approve&code=SGEnYsdguwwhXuGurbIVrr2UviISKcPAFJwJm9e93MsygYBk60sxU1qH%&id=" + insertedID + "'>" + "'" + ConfigurationManager.AppSettings["SiteURL"] + "?action=approve&code=SGEnYsdguwwhXuGurbIVrr2UviISKcPAFJwJm9e93MsygYBk60sxU1qH%&id=" + insertedID + "'</p>"; _body += "<p>if you would like to decline the tutor request, you can click the below link :</p>"; _body += "<a href='" + ConfigurationManager.AppSettings["SiteURL"] + "?action=decline&code=SGEnYsdguwwhXuGurbIVrr2UviISKcPAFJwJm9e93MsygYBk60sxU1qH%&id=" + insertedID + "'>" + "'" + ConfigurationManager.AppSettings["SiteURL"] + "?action=decline&code=SGEnYsdguwwhXuGurbIVrr2UviISKcPAFJwJm9e93MsygYBk60sxU1qH%&id=" + insertedID + "'</p>"; _body += "<p>--</p>"; _body += "<p>Regards from <a href='http://instanttutors.org/' target='_blank' rel='noopener'>Intant Tutors Team</a> </p>"; _body += "<p> </p>"; _body += "<p>Mark <a href='http://instanttutors.org/Inappropriate?action=Inappropriate&Fromid=" + model.UserId + "&Forid=" + model.Student + "' target='_blank' rel='noopener'>Inappropriate</a> , report to administrator</p>"; var _userInfo = UserManager.FindByIdAsync(model.Student); string emailTo = utilityService.GetEmailAddress(model.Student); await EmailSender.SendEmailAsync(_subject, _body, emailTo); //await SMSSender.SMSSenderAsync(message + " Tutor name is " + model.User.FirstName + " " + model.User.LastName); ModelState.Clear(); //ViewBag.success = "<div class='alert alert-success'><strong>Success!</strong> Session info successfully submitted.</div>"; //model.Students = GetStudents(); ViewBag.success = "<div class='alert alert-success'><strong>Success!</strong> " + message + "</div>"; //model.Tutors = GetTutors(); System.Threading.Thread.Sleep(1000); var _user = await UserManager.FindByEmailAsync(User.Identity.Name); TutorViewModel _tutorViewModel = new TutorViewModel() { UserId = _user.Id, User = _user }; _tutorViewModel.SessionsList = await _sessionService.GetSessionByTutorIdAsync(_user.Id); return(View("Index", _tutorViewModel)); } catch (Exception ex) { ViewBag.success = "<div class='alert alert-danger'><strong>ERROR!</strong> " + ex.Message + ".</div>"; model.Students = GetStudents(); return(View("Schedule", model)); } } model.Students = GetStudents(); return(View("Schedule", model)); }
public async Task <ActionResult> Schedule(int?id) { var _user = await UserManager.FindByEmailAsync(User.Identity.Name); var _session = await _sessionService.GetSessionByIdAsync(id ?? 0); _session = _session == null ? new Sessions() : _session; TutorSessionViewModel model = new TutorSessionViewModel() { Id = _session.Id, Title = _session.Title, Description = _session.Description, Concerns = _session.Concerns, CommunicationMethod = _session.CommunicationMethod, CreatedDate = _session.CreatedDate == null ? DateTime.Now : _session.CreatedDate, CreatedBy = _session.CreatedBy, UserId = _user.Id, User = _user, Student = _session.UserId, StartDate = _session.StartDate, EndDate = _session.EndDate }; var SessionSchedules = new List <TutorSessionScheduleViewModel>(); foreach (DayOfWeek day in Enum.GetValues(typeof(DayOfWeek)).OfType <DayOfWeek>().ToList().Skip(1)) { SessionSchedules.Add(new TutorSessionScheduleViewModel() { //Id UserId = _user.Id, SessionId = _session.Id, Timing = Utils.Common.GetTiming(), Day = day }); } if (_session.SessionSchedule != null) { if (_session.SessionSchedule.Count > 0) { foreach (var schedule in SessionSchedules) { foreach (var _time in schedule.Timing) { var availTime = _session.SessionSchedule.FirstOrDefault(x => x.Time == _time.AvailabilityTime && x.Day == schedule.Day); if (availTime != null) { schedule.Id = availTime.Id; _time.Selected = true; schedule.Time = availTime.Time; } } } } } if (Request.QueryString["tid"] != null) { model.Student = Request.QueryString["tid"]?.ToString(); model.IsRequestComingFromTutor = true; } model.SessionSchedules = SessionSchedules; model.Students = GetStudents(); return(View("Schedule", model)); }