public async Task <ActionResult> SelectTiming(AdminSessionViewModel 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 <SessionScheduleViewModel>(); 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 SessionScheduleViewModel() { //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(); model.Tutors = GetTutors(); return(View("NewSchedule", 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; AdminSessionViewModel model = new AdminSessionViewModel() { 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, Tutor = _session.TutorUserId, Student = _session.UserId, StartDate = _session.StartDate, EndDate = _session.EndDate }; var SessionSchedules = new List <SessionScheduleViewModel>(); foreach (DayOfWeek day in Enum.GetValues(typeof(DayOfWeek)).OfType <DayOfWeek>().ToList().Skip(1)) { SessionSchedules.Add(new SessionScheduleViewModel() { //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; } } } } } model.SessionSchedules = SessionSchedules; model.Tutors = GetTutors(); model.Students = GetStudents(); return(View("NewSchedule", model)); }
public async Task <ActionResult> NewSchedule(int?id) { string tutorHashCode = string.Empty; var _user = await UserManager.FindByEmailAsync(User.Identity.Name); var _session = await _sessionService.GetSessionByIdAsync(id ?? 0); _session = _session == null ? new Sessions() : _session; DateTime startDate = DateTime.Now; DateTime endDate = DateTime.Now.AddDays(100); AdminSessionViewModel model = new AdminSessionViewModel() { Id = _session.Id, Title = _session.Title, Description = _session.Description, Concerns = _session.Concerns, CommunicationMethod = _session.CommunicationMethod, CreatedDate = _session.CreatedDate == null ? DateTime.Now : _session.CreatedDate, UserId = _user.Id, User = _user }; var SessionSchedules = new List <SessionScheduleViewModel>(); //if((endDate - startDate).TotalDays > 7) //{ //} //for (DateTime date = startDate; date.Date <= endDate.Date; date = date.AddDays(1)) //{ // SessionSchedules.Add(new SessionScheduleViewModel() // { // //Id // UserId = _user.Id, // SessionId = _session.Id, // Timing = Utils.Common.GetTiming(), // Day = date.DayOfWeek // }); //} foreach (DayOfWeek day in Enum.GetValues(typeof(DayOfWeek)).OfType <DayOfWeek>().ToList().Skip(1)) { SessionSchedules.Add(new Student.ViewModels.SessionScheduleViewModel() { //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; } } } } } model.SessionSchedules = SessionSchedules; if (Request.QueryString["tid"] != null) { tutorHashCode = Request.QueryString["tid"]?.ToString(); model.IsRequestComingFromTutor = true; } model.Students = GetStudents(); model.Tutors = GetTutors(); return(View(model)); }
public async Task <ActionResult> Schedule(AdminSessionViewModel 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>" + model.CommunicationMethod + "</b> <b>(" + model.Title + ")</b><br/><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.Tutors = GetTutors(); return(View("NewSchedule", model)); } var message = "New Session has been scheduled."; if (model.Id > 0) { (bool success, AdminSessionViewModel 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.Tutors = GetTutors(); return(View("NewSchedule", model)); } message = "A scheduled session has been updated."; } else { (bool success, AdminSessionViewModel data) = await _scheduleService.CreateScheduleAsync(model); insertedID = data.Id; } var t = Task.Run(() => { try { var _subject = "Student Session Schedule Info - " + model.User.FirstName + " " + model.User.LastName + " | instanttutors.org"; var _body = "<a class='navbar-brand' href='/'><img src='http://www.instanttutors.org/Content/images/logo.png' style='width:240px;' /></a>"; _body += "<p>Greetings,</p>"; _body += "<p>" + model.Title.ToUpper() + "</p>"; _body += "<p>Student: " + 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>"; string emailTo = utilityService.GetEmailAddress(model.Student); string emailTo1 = utilityService.GetEmailAddress(model.Tutor); EmailSender.SendEmailAdmin(_subject, _body, emailTo, emailTo1); SMSSender.SMSSenderAsync(message + " Student name is " + model.User.FirstName + " " + model.User.LastName); } catch { } }); ModelState.Clear(); ViewBag.success = "<div class='alert alert-success'><strong>Success!</strong> " + message + "</div>"; var _user = await UserManager.FindByEmailAsync(User.Identity.Name); StudentViewModel _studentViewModel = new StudentViewModel() { UserId = _user.Id, User = _user }; _studentViewModel.SessionsList = await _sessionService.GetSessionAdminAsync(_user.Id); return(View("Index1", _studentViewModel)); //return View("SelectTiming", model); } catch (Exception ex) { ViewBag.success = "<div class='alert alert-danger'><strong>ERROR!</strong> " + ex.Message + ".</div>"; model.Tutors = GetTutors(); model.Students = GetStudents(); return(View("NewSchedule", model)); } } model.Tutors = GetTutors(); model.Students = GetStudents(); return(View("NewSchedule", model)); }
public async Task <ActionResult> Schedule(AdminSessionViewModel model) { model.TutorsList = model.TutorsList == null ? await _sessionService.GetTutorsAsync() : model.TutorsList; model.StudentsList = model.StudentsList == null ? await _sessionService.GetStudentsAsync() : model.StudentsList; 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>" + model.CommunicationMethod + "</b> <b>(" + model.Title + ")</b><br/><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>"; return(View(model)); } var message = "New Session has been scheduled."; try { model.UserId = model.StudentUserId; model.CreatedBy = User.Identity.GetUserId(); } catch { } if (model.Id > 0) { (bool success, SessionViewModel data) = await _scheduleService.UpdateScheduleAsync(model); if (success == false) { ViewBag.success = "<ul><li><p style='color:red'>ERROR: Session Doesn't Exist.</p></li></ul>"; return(View(model)); } message = "A scheduled session has been updated."; } else { (bool success, SessionViewModel data) = await _scheduleService.CreateScheduleAsync(model); } //var t = Task.Run(() => //{ try { var tutorInfo = await UserManager.FindByIdAsync(model.TutorUserId); var studentInfo_ = model.StudentsList.Where(x => x.Value == model.StudentUserId).FirstOrDefault(); var studentInfo = studentInfo_ == null ? "" : studentInfo_.Text; var _subject = "New Session Scheduled - " + studentInfo + " | instanttutors.org"; var _body = "<h3>" + message + "</h3>" + "<b>Student:</b> " + studentInfo + "<br/>" + "<b>Session Title:</b> " + model.Title + "<br/>" + "<b>Description <small>(If Any)</small>:</b> " + model.Description + "<br/>" + "<b>Tutor Information:</b> " + tutorInfo.FirstName + " " + tutorInfo.LastName + " <small>(" + tutorInfo.Gender + ")</small>, E: " + tutorInfo.Email + ", M: " + tutorInfo.PhoneNumber + "<br/>" + "<b>Communication Method:</b> " + model.CommunicationMethod + "<br/>" + "<b>Comment/Concerns <small>(If Any)</small>:</b> " + model.Concerns + "<h4>AVAILABLE ON : </h4>" + sessionInfo + "<br/><br/>" + "<a href='http://instanttutors.org/' target='_blank'>Instant Tutors</a> Team @" + DateTime.Now.Year; await EmailSender.SendEmailAsync(_subject, _body); await SMSSender.SMSSenderAsync(message + " Student name is " + studentInfo); } catch (Exception ex1) { } //}); ModelState.Clear(); ViewBag.success = "<ul><li><p style='color:green'>Hurray!! Session info successfully submitted.</p></li></ul>"; return(View(model)); } catch (Exception ex) { ViewBag.success = "<ul><li><p style='color:red'>ERROR: " + ex.Message + "</p></li></ul>"; return(View(model)); } } return(View(model)); }