Ejemplo n.º 1
0
        public ActionResult setTrainerForASectionOfClass(int id)
        {
            var sectionOfClass  = db.DayTimeCourseTrainerCanceleds.Find(id);
            var courseDayTime   = db.DayTimes.Where(item => item.CourseId == sectionOfClass.DayTime.CourseId).ToList();
            var course          = sectionOfClass.DayTime.Courses;
            var trainerOfClass  = course.ApplicationUsers.Where(item => item.Roles.Any(item2 => item2.RoleId == "1")).FirstOrDefault();
            var suitableTrainer = db.Users.Where(item => item.Roles.Any(item2 => item2.RoleId == "1") &&
                                                 item.Majors.Any(item2 => item2.Name.Contains(course.Major.Name)) &&
                                                 item.Id != trainerOfClass.Id).ToList();

            var suitableTrainer2 = new List <ApplicationUser>();

            #region suitable trainer with did not have class in the time and day of this course
            foreach (var item2 in suitableTrainer)
            {
                List <DayTime> dayTimeItem2 = db.DayTimes.Where(item3 => item3.Courses.TrainerStatus == CoachAcceptance.Accepted &&
                                                                item3.Courses.ApplicationUsers.Any(item4 => item4.Id == item2.Id && item4.Roles.Any(item5 => item5.RoleId == "1"))
                                                                ).ToList();

                bool state = false;
                foreach (var item3 in dayTimeItem2)
                {
                    foreach (var item4 in courseDayTime)
                    {
                        if (item4.StartTime == item3.StartTime && item4.EndTime == item3.EndTime && item4.Day == item3.Day)
                        {
                            state = true;
                            break;
                        }
                    }
                    if (state)
                    {
                        break;
                    }
                }
                if (!state)
                {
                    suitableTrainer2.Add(item2);
                }
            }
            ViewBag.trainers = suitableTrainer2;
            if (suitableTrainer2.Count() == 0)
            {
                List <String> suitableTrainerZero = new List <String>();
                suitableTrainerZero.Add("هیچ مربی مناسب جهت جایگزینی یافت نشد");
                ViewBag.trainers = suitableTrainerZero;
            }
            #endregion
            ViewBag.trainers = suitableTrainer;
            setAlternativeTrainerViewModel alternativeTrainerViewModel = new setAlternativeTrainerViewModel();
            alternativeTrainerViewModel.Id = sectionOfClass.Id;
            return(View(alternativeTrainerViewModel));
        }
Ejemplo n.º 2
0
        public ActionResult setTrainerForASectionOfClass(setAlternativeTrainerViewModel alternativeTrainerViewModel, string trainerMsg)
        {
            if (ModelState.IsValid)
            {
                IRepository <DayTimeCourseTrainerCanceled> repository = new Repository <DayTimeCourseTrainerCanceled>();
                var sessionOfClass = repository.Read(alternativeTrainerViewModel.Id);
                sessionOfClass.Fee = alternativeTrainerViewModel.Fee;
                sessionOfClass.AlternativeTrainerId = alternativeTrainerViewModel.AlternativeTrainerId;
                repository.Update(sessionOfClass);

                string description        = "به اطلاع می رساند شما به عنوان مربی برای جلسه ای این کلاس انتخاب شده اید. لطفا هرچه سریعتر در داشبورد خود اقدام به <b>پذیرش/ عدم پذیرش</b> این جلسات کنید.";
                var    admin              = db.Users.Where(item => item.Roles.Any(item2 => item2.RoleId == "3")).FirstOrDefault();
                var    AlternativeTrainer = db.Users.Find(alternativeTrainerViewModel.AlternativeTrainerId);
                var    text = Email.PopulateBody(AlternativeTrainer.Name, "اعلام مربیگری برای جلسه ای از کلاس", sessionOfClass.DayTime.CourseId.Value, description, "کلاس");
                Message.SendMessage("اعلام مربیگری برای جلسه ای از کلاس", text, admin.Id, AlternativeTrainer.Id, description);
                ///////////////////////////////////////////////////////////////////////////////
                //send Email///////////
                Email.sendEmail("اعلام مربیگری برای جلسه ای از کلاس", AlternativeTrainer.Email, AlternativeTrainer.Name, "اعلام مربیگری برای جلسه ای از کلاس", text);

                return(Redirect("/Admin/Course/TrainerVacationOnCourseDetail/" + sessionOfClass.DayTime.CourseId));
            }
            return(View(alternativeTrainerViewModel));
        }