public ApiSimpleResult<FacultyModel> AddFaculty(FacultyModel faculty)
 {
     var result = new ApiSimpleResult<FacultyModel>();
     var response = FacultySvc.AddFaculty(faculty);
     if (response != null)
         result.Data = response;
     return result;
 }
 public ApiSimpleResult<List<UserModel>> GetUserByRole(string id)
 {
     var result = new ApiSimpleResult<List<UserModel>>();
     var response = FacultySvc.GetUserByRole(id);
     if (response != null)
         result.Data = response;
     return result;
 }
 public ApiSimpleResult<FacultyModel> DeleteFaculty(FacultyModel faculty)
 {
     var result = new ApiSimpleResult<FacultyModel>();
     var response = FacultySvc.DeleteFaculty(faculty);
     if (response != null)
         result = response;
     return result;
 }
 public ApiSimpleResult<List<FacultyModel>> GetFaculties()
 {
     var result = new ApiSimpleResult<List<FacultyModel>>();
     var response = FacultySvc.GetFaculties();
     if (response.Any())
     {
         result.Data = response;
     }
     return result;
 }
 public ApiSimpleResult<RoleModel> AddRole(RoleModelQuery role)
 {
     var response = AccountSvc.CreateRole(role);
     ApiSimpleResult<RoleModel> result = new ApiSimpleResult<RoleModel>
     {
         StatusString = "Successful",
         Message = "Create new successfully",
         Data = response
     };
     return result;
 }
 public ApiSimpleResult<UserModel> AddUser(UserQueryModel user)
 {
     var response = AccountSvc.CreateUser(user);
     ApiSimpleResult<UserModel> result = new ApiSimpleResult<UserModel>
     {
         StatusString = "Successful",
         Message = "Create new successfully",
         Data = response
     };
     return result;
 }
        public ApiSimpleResult<UserModel> SaveUser(UserModel user)
        {
            var result = new ApiSimpleResult<UserModel>();
            var response = AccountSvc.SaveUser(user);
            if (response != null)
            {
                result.Data = response;
            }

            return result;
        }
 public ApiSimpleResult<UserModel> GetUserDetails(int id)
 {
     var response = AccountSvc.GetUserDetails(id);
     var result = new ApiSimpleResult<UserModel>
     {
         StatusString = "Successful",
         Message = "Get all roles successfully"
     };
     if (response != null)
     {
         result.Data = response;
     }
     return result;
 }
 public ApiSimpleResult<StudentCourseModel> DeleteStudentCourse(StudentCourseModel queryModel)
 {
     var status = DbContext.GeneralStatuses.Find(queryModel.GeneralStatus.StatusId);
     DbContext.Entry(status).State = EntityState.Deleted;
     var deleteItem = DbContext.StudentCourses.Find(queryModel.StudentCourseId);
     DbContext.Entry(deleteItem).State = EntityState.Deleted;
     var result = new ApiSimpleResult<StudentCourseModel>();
     try
     {
         DbContext.SaveChanges();
         result.StatusString = "Successful";
         result.Message = "Delete data successfully";
         result.Data = queryModel;
     }
     catch (DbUpdateConcurrencyException ex)
     {
         result.Message = "Error";
         result.StatusString = "Error";
     }
     return result;
 }
 public ApiSimpleResult<RoleModel> DeleteRole(RoleModel role)
 {
     var status = db.GeneralStatuses.Find(role.GeneralStatus.StatusId);
     db.Entry(status).State = EntityState.Deleted;
     var updateRole = db.Roles.Find(role.RoleId);
     db.Entry(updateRole).State = EntityState.Deleted;
     ApiSimpleResult<RoleModel> result = new ApiSimpleResult<RoleModel>();
     try
     {
         db.SaveChanges();
         result.StatusString = "Successful";
         result.Message = "Delete data successfully";
         result.Data = role;
     }
     catch (DbUpdateConcurrencyException ex)
     {
         result.Message = "Error";
         result.StatusString = "Error";
     }
     return result;
 }
 public ApiSimpleResult<string> GetCourseStatus(int id)
 {
     var response = FacultySvc.GetCourseStatus(id);
     var result = new ApiSimpleResult<string>
     {
         StatusString = "Successful",
         Message = "Get all roles successfully"
     };
     if (response != null)
     {
         result.Data = response;
     }
     return result;
 }
 public ApiSimpleResult<CourseModel> SaveCourse(CourseApprovalQuery queryModel)
 {
     var result = new ApiSimpleResult<CourseModel>();
     var response = FacultySvc.SaveCourse(queryModel);
     if (response != null)
         result.Data = response;
     return result;
 }
 public ApiSimpleResult<StudentCourseModel> DeleteStudentCourse(StudentCourseModel queryModel)
 {
     var result = new ApiSimpleResult<StudentCourseModel>();
     var response = FacultySvc.DeleteStudentCourse(queryModel);
     if (response != null)
         result = response;
     return result;
 }
 public ApiSimpleResult<List<AccademicSessionModel>> GetAccademicSession()
 {
     var result = new ApiSimpleResult<List<AccademicSessionModel>>();
     var response = FacultySvc.GetAccademicSessions();
     if (response.Any())
     {
         result.Data = response;
     }
     return result;
 }
 public ApiSimpleResult<UserRole> AddUserRole(UserRoleModel userRole)
 {
     var response = AccountSvc.CreateUserRole(userRole);
     ApiSimpleResult<UserRole> result = new ApiSimpleResult<UserRole>
     {
         StatusString = "Successful",
         Message = "Create new successfully",
         Data = response.Data
     };
     return result;
 }
 public ApiSimpleResult<AcademicModel> GetAcademicDetails(int id)
 {
     var response = FacultySvc.GetAcademicDetails(id);
     var result = new ApiSimpleResult<AcademicModel>
     {
         StatusString = "Successful",
         Message = "Get all roles successfully"
     };
     if (response != null)
     {
         result.Data = response;
     }
     return result;
 }
 public ApiSimpleResult<UserModel> DeleteUser(UserModel user)
 {
     var status = db.GeneralStatuses.Find(user.Status.StatusId);
     db.Entry(status).State = EntityState.Deleted;
     var deleteUser = db.Users.Find(user.Id);
     db.Entry(deleteUser).State = EntityState.Deleted;
     var result = new ApiSimpleResult<UserModel>();
     try
     {
         db.SaveChanges();
         result.StatusString = "Successful";
         result.Message = "Delete data successfully";
         result.Data = user;
     }
     catch (DbUpdateConcurrencyException ex)
     {
         result.Message = "Error";
         result.StatusString = "Error";
     }
     return result;
 }
 public ApiSimpleResult<StudentModel> SaveStudent(StudentModel queryModel)
 {
     var result = new ApiSimpleResult<StudentModel>();
     var response = FacultySvc.SaveStudent(queryModel);
     if (response != null)
         result.Data = response;
     return result;
 }
 public ApiSimpleResult<FacultyCourseModel> SaveFacultyCourse(FacultyCourseModel facultyCourse)
 {
     var result = new ApiSimpleResult<FacultyCourseModel>();
     var response = FacultySvc.SaveFacultyCourse(facultyCourse);
     if (response != null)
         result.Data = response;
     return result;
 }
        public ApiSimpleResult<List<GeneralStatusModel>> GetGeneralStatus()
        {
            var generalStatusList = new List<GeneralStatusModel>
            {
                new GeneralStatusModel{ StatusId = 1, StatusName = GlobalString.StatusActive },
                new GeneralStatusModel{ StatusId = 2, StatusName = GlobalString.StatusInActive }
            };
            var result = new ApiSimpleResult<List<GeneralStatusModel>>
            {
                StatusString = "Successful",
                Message = "Get all roles successfully",
                Data = generalStatusList
            };

            return result;
        }
 public ApiSimpleResult<AcademicModel> DeleteAcademic(AcademicModel queryModel)
 {
     var deleteItem = DbContext.AccademicSessions.Find(queryModel.AccademicSessionId);
     DbContext.Entry(deleteItem).State = EntityState.Deleted;
     var result = new ApiSimpleResult<AcademicModel>();
     try
     {
         DbContext.SaveChanges();
         result.StatusString = "Successful";
         result.Message = "Delete data successfully";
         result.Data = queryModel;
     }
     catch (DbUpdateConcurrencyException ex)
     {
         result.Message = "Error";
         result.StatusString = "Error";
     }
     return result;
 }
        public ApiSimpleResult<RoleModel> SaveRole(RoleModel role)
        {
            var result = new ApiSimpleResult<RoleModel>();
            var response = AccountSvc.SaveRole(role);
            if (response != null)
            {
                result.Data = response;
            }

            return result;
        }
 public ApiSimpleResult<UserRole> CreateUserRole(UserRoleModel userRole)
 {
     var result = new ApiSimpleResult<UserRole>() { StatusString = "Fail", Message = "Cannot create user role." };
     if (userRole != null)
     {
         var status = new GeneralStatus
         {
             StatusName = userRole.Status,
             CreateTime = DateTime.Now,
             UpdateTime = DateTime.Now
         };
         db.GeneralStatuses.Add(status);
         var newUserRole = new UserRole
         {
             RoleId = userRole.RoleId,
             UserId = userRole.UserId,
             Note = userRole.Note,
             StatusId = status.StatusId
         };
         db.UserRoles.Add(newUserRole);
         db.SaveChanges();
         result.StatusString = "Succesful";
         result.Message = "Create new UserRole successfully";
         result.Data = newUserRole;
     }
     return result;
 }
 public ApiSimpleResult<AcademicModel> DeleteAcademic(AcademicModel queryModel)
 {
     var result = new ApiSimpleResult<AcademicModel>();
     var response = FacultySvc.DeleteAcademic(queryModel);
     if (response != null)
         result = response;
     return result;
 }
 public ApiSimpleResult<List<CourseModel>> GetCoursesByAccademicSession(int id, string role)
 {
     var result = new ApiSimpleResult<List<CourseModel>>();
     var response = FacultySvc.GetCoursesByAccademicSession(id, role);
     if (response.Any())
     {
         result.Data = response;
     }
     return result;
 }
 // Student Course Management
 public ApiSimpleResult<List<StudentCourseModel>> GetStudentCourses(int id)
 {
     var result = new ApiSimpleResult<List<StudentCourseModel>>();
     var response = FacultySvc.GetStudentCourses(id);
     if (response.Any())
     {
         result.Data = response;
     }
     return result;
 }
 public ApiSimpleResult<List<GradeGroup>> GetGradeGroups()
 {
     var response = FacultySvc.GetGradeGroups();
     var result = new ApiSimpleResult<List<GradeGroup>>
     {
         StatusString = "Successful",
         Message = "Get all roles successfully"
     };
     if (response != null)
     {
         result.Data = response;
     }
     return result;
 }
 public ApiSimpleResult<List<UserModel>> GetUsers()
 {
     var response = AccountSvc.GetUsers();
     var result = new ApiSimpleResult<List<UserModel>>
     {
         StatusString = "Successful",
         Message = "Get all users successfully"
     };
     if (response.Any())
     {
         result.Data = response;
     }
     return result;
 }
 public ApiSimpleResult<FacultyModel> DeleteFaculty(FacultyModel item)
 {
     var status = DbContext.GeneralStatuses.Find(item.GeneralStatus.StatusId);
     DbContext.Entry(status).State = EntityState.Deleted;
     var deleteItem = DbContext.Faculties.Find(item.FacultyId);
     DbContext.Entry(deleteItem).State = EntityState.Deleted;
     var result = new ApiSimpleResult<FacultyModel>();
     try
     {
         DbContext.SaveChanges();
         result.StatusString = "Successful";
         result.Message = "Delete data successfully";
         result.Data = item;
     }
     catch (DbUpdateConcurrencyException ex)
     {
         result.Message = "Error";
         result.StatusString = "Error";
     }
     return result;
 }