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)); }
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)); }