コード例 #1
0
ファイル: SessionController.cs プロジェクト: reddymade/tutor
        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));
        }
コード例 #2
0
ファイル: SessionController.cs プロジェクト: reddymade/tutor
        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>&nbsp;&nbsp;&nbsp;<b>" + time.Time + "</b>&nbsp;&nbsp;&nbsp;<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&nbsp;<a href='http://instanttutors.org/' target='_blank' rel='noopener'>Intant Tutors Team</a> &nbsp;</p>";
                    _body += "<p>&nbsp;</p>";
                    _body += "<p>Mark&nbsp;<a href='http://instanttutors.org/Inappropriate?action=Inappropriate&Fromid=" + model.UserId + "&Forid=" + model.Student + "' target='_blank' rel='noopener'>Inappropriate</a>&nbsp; , 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));
        }
コード例 #3
0
ファイル: SessionController.cs プロジェクト: reddymade/tutor
        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));
        }