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)
                });
            }
        }
Exemple #2
0
        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)
                });
            }
        }