public TResult <AvailabilityApiModel> GetAvailabiltyInfo(int?id) { try { if (CheckUserPermission()) { var av = Db.Availabilities.Include(c => c.TeacherAvailabilities) .Where(c => c.Id == id && c.TeacherAvailabilities.Any(ee => ee.Teacher_UserId == CurrentUser.Id)).FirstOrDefault(); if (av == null) { return new TResult <AvailabilityApiModel>() { IsOk = true, Message = new Message("Availability Not Found", MessageType.Error), Item = null } } ; else { var teachers = av.TeacherAvailabilities.Select(c => c.Teacher_UserId).ToList(); List <TeacherApiModel> techs = new List <TeacherApiModel>(); foreach (var item in teachers) { var te = Db.Teachers.Find(item); var tech = new TeacherApiModel() { FirsName = te.FirstName, LastName = te.LastName, Id = te.Id, UserId = te.UserId, Role = Discriminator.Teacher }; techs.Add(tech); } return(new TResult <AvailabilityApiModel>() { IsOk = true, Item = new AvailabilityApiModel() { Id = av.Id, StartTime = av.StartTime, EndTime = av.EndTime, Date = av.Date.ToString("MM/dd/yyyy"), IsClosed = av.IsClosed // Teachers = techs } }); } } else { return(new TResult <AvailabilityApiModel>() { Item = null, IsOk = true, Message = new Message("You must logging in as teacher", MessageType.Error) }); } } catch (Exception ex) { return(new TResult <AvailabilityApiModel>() { Item = null, IsOk = false, Message = new Message(ex.Message + " " + ex.InnerException?.Message, MessageType.Error) }); } }
public TResult <SubjectApiModel> GetSubjectInfo(int?id) { try { if (CheckUserPermission()) { var sub = Db.Subjects.Include(c => c.TeacherSubjs).Where(ee => ee.Id == id && ee.TeacherSubjs.Any(t => t.Teacher_UserId == CurrentUser.Id)).FirstOrDefault(); if (sub == null) { return new TResult <SubjectApiModel>() { IsOk = true, Message = new Message("Subject Not Found", MessageType.Error), Item = null } } ; else { var teachers = sub.TeacherSubjs.Select(c => c.Teacher_UserId).ToList(); List <TeacherApiModel> techs = new List <TeacherApiModel>(); foreach (var item in teachers) { var te = Db.Teachers.Find(item); var tech = new TeacherApiModel() { FirsName = te.FirstName, LastName = te.LastName, Id = te.Id, Role = Discriminator.Teacher }; techs.Add(tech); } return(new TResult <SubjectApiModel>() { IsOk = true, Message = new Message("Success", MessageType.Success), Item = new SubjectApiModel() { Id = sub.Id, Name = sub.Name, Teachers = techs } }); } } else { return(new TResult <SubjectApiModel>() { IsOk = true, Message = new Message("You must logging in as teacher", MessageType.Error), Item = null }); } } catch (Exception ex) { return(new TResult <SubjectApiModel>() { Item = null, IsOk = false, Message = new Message(ex.Message + " " + ex.InnerException?.Message, MessageType.Error) }); } }
public ListResult <TeacherApiModel> List(string language, int?levelId, string subject) { try { if (!HttpContext.Current.User.Identity.IsAuthenticated) { return new ListResult <TeacherApiModel>() { IsOk = true, Message = new Message("Error ,Please Login as Student", MessageType.Error), Items = null } } ; var dbTeachers = Db.Teachers .Include(t => t.TeacherLangs) .Include(t => t.TeacherLevels) .Include(t => t.TeacherSubjs) .Include(t => t.TeacherAvailabilities).ToList(); if (!string.IsNullOrEmpty(language)) { var languages = Db.TeacherLangs .Include(c => c.Language) .Where(c => c.Language.Name.ToLower() .Contains(language.ToLower())).Select(c => c.Id).ToList(); dbTeachers = dbTeachers .Where(c => c.TeacherLangs.Any(e => languages.Contains(e.Id))).ToList(); } if (levelId != null) { var levels = Db.TeacherLevels.Include(c => c.Level) .Where(c => c.Level.Id == levelId.Value) .Select(c => c.Id).ToList(); dbTeachers = dbTeachers .Where(c => c.TeacherLevels.Any(e => levels.Contains(e.Id))).ToList(); } if (!string.IsNullOrEmpty(subject)) { var subjects = Db.TeacherSubjs .Include(c => c.Subject) .Where(c => c.Subject.Name.ToLower() .Contains(subject.ToLower())).Select(c => c.Id).ToList(); dbTeachers = dbTeachers .Where(c => c.TeacherSubjs.Any(e => subjects.Contains(e.Id))).ToList(); } List <TeacherApiModel> teachers = new List <TeacherApiModel>(); if (dbTeachers != null || dbTeachers.Count != 0) { foreach (var item in dbTeachers) { List <LanguageApiModel> teacherlgs = new List <LanguageApiModel>(); foreach (var ls in item.TeacherLangs) { Language av = Db.Languages.Find(ls.LangId); teacherlgs.Add(new LanguageApiModel { Id = av.Id, Name = av.Name }); } List <AvailabilityApiModel> teacherAvs = new List <AvailabilityApiModel>(); foreach (var avs in item.TeacherAvailabilities) { Availability av = Db.Availabilities.Find(avs.AvailabilityId); teacherAvs.Add(new AvailabilityApiModel { Id = av.Id, Date = av.Date.ToString("MM/dd/yyyy"), StartTime = av.StartTime, EndTime = av.EndTime, IsClosed = av.IsClosed }); } List <SubjectApiModel> teacherSujs = new List <SubjectApiModel>(); foreach (var su in item.TeacherSubjs) { Subject sub = Db.Subjects.Find(su.SubjectId); teacherSujs.Add(new SubjectApiModel { Id = sub.Id, Name = sub.Name }); } List <LevelApiModel> teacherLvs = new List <LevelApiModel>(); foreach (var su in item.TeacherLevels) { var lv = Db.Levels.Find(su.LevelId); teacherLvs.Add(new LevelApiModel { Id = lv.Id, Name = lv.Name }); } TeacherApiModel tApiModel = new TeacherApiModel() { Id = item.Id, FirsName = item.FirstName, LastName = item.LastName, Levels = teacherLvs, Role = Discriminator.Teacher.ToString(), UserId = item.UserId, Availabilities = teacherAvs, Subjects = teacherSujs, Languages = teacherlgs }; teachers.Add(tApiModel); } } return(new ListResult <TeacherApiModel>() { IsOk = true, Message = new Message("Success, Get Teachers Successfully", MessageType.Success), Items = teachers }); } catch (Exception ex) { return(new ListResult <TeacherApiModel>() { IsOk = false, Message = new Message(ex.Message + " " + ex.InnerException?.Message, MessageType.Error), Items = null }); } }
public TResult <LanguageApiModel> GetLanguageInfo(int?id) { try { if (!HttpContext.Current.User.Identity.IsAuthenticated) { return new TResult <LanguageApiModel> { IsOk = true, Message = new Message("Error ,Please Login as Teacher", MessageType.Error), Item = null } } ; var user = UserManager.FindByEmailAsync(User.Identity.Name).Result; CurrentUser = new UserApiModel { Id = user.Id, Role = "Teacher", Token = null }; var lang = Db.Languages.Include(c => c.TeacherLangs) .Where(ee => ee.Id == id && ee.TeacherLangs.Any(t => t.Teacher_UserId == CurrentUser.Id)).FirstOrDefault(); if (lang == null) { return new TResult <LanguageApiModel>() { IsOk = true, Message = new Message("Language Not Found", MessageType.Error), Item = null } } ; else { var teachers = lang.TeacherLangs.Select(c => c.Teacher_UserId).ToList(); List <TeacherApiModel> techs = new List <TeacherApiModel>(); foreach (var item in teachers) { var te = Db.Teachers.Find(item); var tech = new TeacherApiModel() { FirsName = te.FirstName, LastName = te.LastName, Id = te.Id, Role = Discriminator.Teacher }; techs.Add(tech); } return(new TResult <LanguageApiModel>() { IsOk = true, Item = new LanguageApiModel() { Id = lang.Id, Name = lang.Name, // Teachers = techs } }); } } catch (Exception ex) { return(new TResult <LanguageApiModel>() { Item = null, IsOk = false, Message = new Message(ex.Message + " " + ex.InnerException?.Message, MessageType.Error) }); } }