// [Authorize(Roles = "AddGroup")] public IActionResult Create([FromBody] AddGroupDTO addGroupDto) { try { if (string.IsNullOrWhiteSpace(addGroupDto.Name)) { var message = Messages.EmptyName; message.ActionName = "Add Group"; message.ControllerName = "Group"; return(BadRequest(message)); } // test if there is another group with the same name Group group = _groupRepositroy.Get(c => c.Name == addGroupDto.Name).FirstOrDefault(); if (group != null) { var message = Messages.Exist; message.ActionName = "Add Group"; message.ControllerName = "Group"; return(Conflict(message)); } var priveleges = _privilageRepositroy.Get().Select(c => c.Id); List <int> privelgesId = addGroupDto.Priveleges; if (privelgesId != null) { // test if theres an priveleg Id not in database if (privelgesId.Except(priveleges).Any()) { var message = Messages.NotFound; message.ActionName = "Add Group"; message.ControllerName = "Group"; message.Message = "الصلاحية غير موجودة"; return(NotFound(message)); } } group = new Group() { Name = addGroupDto.Name }; _abstractUnitOfWork.Add(group, UserName()); // for add group without priveleges if (privelgesId != null) { foreach (var item in addGroupDto.Priveleges) { _abstractUnitOfWork.Add(new GroupPrivilage() { GroupId = group.Id, PrivilageId = item }, UserName()); } } _abstractUnitOfWork.Commit(); return(Ok(_mapper.Map <GroupResopnseDTO>(group))); } catch (Exception) { return(BadRequestAnonymousError()); } }
//[Authorize(Roles = "AddUser")] public IActionResult AddUser([FromBody] AddUserDTO addUserDTO) { try { addUserDTO.Name = addUserDTO.Name.Trim(); User simelarUserName = _userRepositroy.Get(c => c.Username == addUserDTO.Username).FirstOrDefault(); if (simelarUserName != null) { var message = Messages.Exist; message.ActionName = "Add User"; message.ControllerName = "User"; return(Conflict(message)); } User user = _mapper.Map <User>(addUserDTO); user.Password = MD5Hash.GetMd5Hash(user.Password); //check for groups Id var groupsId = _groupRepository.Get().Select(c => c.Id); if (addUserDTO.GroupIds != null && addUserDTO.GroupIds.Count > 0) { if (addUserDTO.GroupIds.Except(groupsId).Any()) { var message = Messages.NotFound; message.ActionName = "Add User"; message.ControllerName = "User"; message.Message = "يوجد مجموعة على الاقل غير موجودة"; return(NotFound(message)); } } //end checking _abstractUnitOfWork.Add(user, UserName()); if (addUserDTO.GroupIds != null && addUserDTO.GroupIds.Count > 0) { foreach (var item in addUserDTO.GroupIds) { UserGroup userGroup = new UserGroup() { UserId = user.Id, GroupId = item, }; _abstractUnitOfWork.Add(userGroup, UserName()); } } _abstractUnitOfWork.Commit(); return(Ok(_mapper.Map <UserResponDTO>(user))); } catch (Exception ex) { return(BadRequest(Messages.AnonymousError)); } }
//[Authorize(Roles = "AddSubject")] public IActionResult Add([FromBody] AddSubjectDTO addSubjectDTO) { try { addSubjectDTO.Name = addSubjectDTO.Name.Trim(); var simelarCode = _subjectRepositroy.Get(c => c.SubjectCode == addSubjectDTO.SubjectCode).FirstOrDefault(); if (simelarCode != null) { var message = Messages.Exist; message.ActionName = "Add"; message.ControllerName = "Subject"; return(Conflict(message)); } var subjectType = _subjectTypeRepositroy.Find(addSubjectDTO.SubjectTypeId); if (subjectType == null) { var message = Messages.NotFound; message.ActionName = "Add"; message.ControllerName = "Subject"; message.Message = "نوع المادة غير موجود"; return(Conflict(message)); } var semester = _studySemesterRepositroy.GetIQueryable(c => c.Id == addSubjectDTO.StudySemesterId) .Include(c => c.Studyplan) .ThenInclude(c => c.Year) .FirstOrDefault(); if (semester == null) { var message = Messages.NotFound; message.ActionName = "Add"; message.ControllerName = "Subject"; message.Message = "الفصل التدريسي غير موجود"; return(NotFound(message)); } if (semester.Studyplan.Year.Blocked) { var message = Messages.NotFound; message.ActionName = "Add"; message.ControllerName = "Subject"; message.Message = "لا يمكن تعديل الخطة "; return(Conflict(message)); } var subject = _mapper.Map <Subjects>(addSubjectDTO); _abstractUnitOfWork.Add(subject, UserName()); subject.StudySemester = semester; foreach (var item in addSubjectDTO.DependencySubjectsId) { var depencaySubject = _subjectRepositroy.GetIQueryable(c => c.Id == item) .Include(c => c.StudySemester).FirstOrDefault(); var checking = _subjectServices.CheckSubjectAndDepandcySubject(subject, depencaySubject); if (!checking) { return(Conflict());//؟؟؟؟ } DependenceSubject dependenceSubject = new DependenceSubject { SubjectId = subject.Id, DependsOnSubjectId = item }; _abstractUnitOfWork.Add(dependenceSubject, UserName()); } foreach (var item in addSubjectDTO.EquivalentSubjectsId) { var equivalentSubject = _subjectRepositroy.Find(item); if (equivalentSubject == null) { var message = Messages.NotFound; message.ActionName = "Add"; message.ControllerName = "Subject"; message.Message = "المادةالمكافئة غير موجودة"; return(NotFound(message)); } EquivalentSubject eq = new EquivalentSubject() { FirstSubject = subject.Id, SecoundSubject = item }; _abstractUnitOfWork.Add(eq, UserName()); } _abstractUnitOfWork.Commit(); return(Ok(subject)); } catch { return(BadRequestAnonymousError()); } }
public IActionResult Add(AddYearSystemDTO addYearSystemDTO) { try { addYearSystemDTO.Name = addYearSystemDTO.Name.Trim(); if (string.IsNullOrWhiteSpace(addYearSystemDTO.Name)) { var message = Messages.EmptyName; message.ActionName = "Add"; message.ControllerName = "Year System"; return(BadRequest(message)); } var settingId = addYearSystemDTO.Settings.Select(c => c.Id).ToList(); var mainSettinId = this._settingsRepositroy.Get().Select(c => c.Id).ToList(); // this number of role shoud replace in correct way if (settingId.Count < mainSettinId.Count()) { var message = new BadRequestErrors(); message.ActionName = "Add"; message.ControllerName = "Year System"; message.Message = "لم يتم إرسال كامل الإعدادات"; return(Conflict(message)); } settingId.Sort(); if (settingId.Except(mainSettinId).Any() || mainSettinId.Except(settingId).Any()) { var message = new BadRequestErrors() { ActionName = "Add", ControllerName = "Year System", Message = "لام يتم إرسال جميع الإعدادات او تم إرسال قيمة خاطئة" }; return(Conflict(message)); } if (addYearSystemDTO.IsMain) { var oldMain = _abstractUnitOfWork.Repository <YearSystem>().Get(c => c.IsMain).FirstOrDefault(); if (oldMain != null) { oldMain.IsMain = false; _abstractUnitOfWork.Repository <YearSystem>().Update(oldMain, UserName()); } } YearSystem yearSystem = _mapper.Map <YearSystem>(addYearSystemDTO); _abstractUnitOfWork.Add(yearSystem, UserName()); foreach (var item in addYearSystemDTO.Settings) { var setting = _settingsRepositroy.Find(item.Id); var settingYearSystem = new SettingYearSystem { YearSystem = yearSystem.Id, Setting = setting, Count = item.Count, Note = item.Note }; _abstractUnitOfWork.Add(settingYearSystem, UserName()); } _abstractUnitOfWork.Commit(); return(Ok(_mapper.Map <ResponseYearSystem>(yearSystem))); } catch (Exception ex) { return(BadRequestAnonymousError()); } }
//[Authorize(Roles = "AddStudyPlan")] public IActionResult Add([FromBody] AddStudyPalnDTO addStudyPalnDTO) { try { var year = _yearRepositroy.Find(addStudyPalnDTO.YearId); if (year == null) { var message = Messages.NotFound; message.ActionName = "Add Study Plan"; message.ControllerName = "Study Plan"; message.Message = "السنة غير موجودة"; return(NotFound(message)); } var specialization = _specializationsRepositroy.Find(addStudyPalnDTO.SpecializationId); if (specialization == null) { var message = Messages.NotFound; message.ActionName = "Add Study Plan"; message.ControllerName = "Study Plan"; message.Message = "الاختصاص غير موجود"; return(NotFound(message)); } #region check temporary Id var tempId = addStudyPalnDTO.Subjects.Select(c => c.AddSubjectDTO.TempId).ToArray(); if (tempId.Contains(0)) { var message = new BadRequestErrors(); message.ActionName = "Update"; message.ControllerName = "YearSystem"; message.Message = "الرجاء إعادة تحميل الصفحة"; return(Conflict(message)); } if (tempId.Count() != tempId.Distinct().Count()) { var message = new BadRequestErrors(); message.ActionName = "Update"; message.ControllerName = "YearSystem"; message.Message = "الرجاء إعادة تحميل الصفحة"; return(Conflict(message)); } #endregion #region check subject //but it should replace after asking the Eng //check subject var studyYear = _studyYearRepositroy.Get().ToList(); var subjectsTypesId = _subjectTypeRepositroy.Get().Select(c => c.Id); var subjectsId = _subjectRepositroy.Get().Select(c => c.Id); foreach (var item in addStudyPalnDTO.Subjects) { //there's not thered study semester if (item.StudySemesterNumber > 2) { var message = Messages.NotFound; message.ActionName = "Add Study Plan"; message.ControllerName = "Study Plan"; message.Message = "ليست 3 فصول تدريسية"; return(Conflict(message)); } //chekc if all the year is correct //example //this subject is for thered year and in our collage don't have any thered year yet //so it return an confliect if (studyYear.Select(c => c.Id).ToList().IndexOf(item.StudyYearId) < 0) { var message = new BadRequestErrors(); message.ActionName = "Add Study Plan"; message.ControllerName = "Study Plan"; message.Message = "السنة الدراسية غير موجودة"; return(Conflict(message)); } //check Type if exist if (!subjectsTypesId.Contains(item.AddSubjectDTO.SubjectTypeId)) { var message = Messages.NotFound; message.ActionName = "Add Study Plan"; message.ControllerName = "Study Plan"; message.Message = "نوع المادة غير موجود"; return(NotFound(message)); } var subject = item.AddSubjectDTO; //befor tempId //if (subject.DependencySubjectsId.Except(subjectsId).Any()) //{ // return Conflict(); //} subject.Name = subject.Name.Trim(); if (string.IsNullOrWhiteSpace(subject.Name)) { var message = Messages.EmptyName; message.ActionName = "Add Study Plan"; message.ControllerName = "Study Plan"; return(Conflict(message)); } if (subject.DependencySubjectsId.Except(tempId).Any()) { var message = Messages.ReLoadPage; message.ActionName = "Add Study Plan"; message.ControllerName = "Study Plan"; return(Conflict(message)); } if (subject.EquivalentSubjectsId.Except(subjectsId).Any()) { var message = Messages.ReLoadPage; message.ActionName = "Add Study Plan"; message.ControllerName = "Study Plan"; return(Conflict(message)); } subject.DependencySubjectsId = subject.DependencySubjectsId.Distinct().ToList(); subject.EquivalentSubjectsId = subject.EquivalentSubjectsId.Distinct().ToList(); } #endregion var studyPaln = _mapper.Map <StudyPlan>(addStudyPalnDTO); _abstractUnitOfWork.Add(studyPaln, UserName()); Dictionary <int, Subjects> tempIdAndSubject = new Dictionary <int, Subjects>(); for (int i = 1; i <= studyYear.Count(); i++) { //get the subject for this year mean first year and secound year ..etc var subjectsForYear = addStudyPalnDTO.Subjects.Where(c => c.StudyYearId == studyYear[i - 1].Id); //for adding in semester //semester number because we have 2 semester in the year for (int semesterNumber = 1; semesterNumber <= 2; semesterNumber++) { var semester = new StudySemester() { Number = (short)semesterNumber, StudyYearId = studyYear[i - 1].Id, StudyplanId = studyPaln.Id, }; _abstractUnitOfWork.Add(semester, UserName()); //get subject for the semester var subjectsForSemester = subjectsForYear.Where(c => c.StudySemesterNumber == semesterNumber); #region explain //the output is like subject for first yaer and semester 1 in the first looping . //exmple of output for Specialization Softwere engineering. // programing 1 , electorinec , math1 , operaing system 1 //in the secound loop for the inner loop //out put example //programing 2 , math2 ,e2 , //in the seocund loop for the outer loop and first loop for inner loop // advance programing 1 , oracle 1 ,operaing system 2 // this example depend on input //for git subject without any extande proraty #endregion var finalSubjectAfterFilering = subjectsForSemester.Select(c => c.AddSubjectDTO).ToList(); finalSubjectAfterFilering.ForEach(c => c.StudySemesterId = semester.Id); foreach (var subjectDTO in finalSubjectAfterFilering) { var subject = _mapper.Map <Subjects>(subjectDTO); subject.StudySemester = semester; _abstractUnitOfWork.Add(subject, UserName()); //foreach (var DependencySubjectId in subjectDTO.DependencySubjectsId) //{ // _abstractUnitOfWork.Repository<DependenceSubject>() // .Add(new DependenceSubject() // { // SubjectId = subject.Id, // DependsOnSubjectId = DependencySubjectId // }, UserName()); //} tempIdAndSubject[subjectDTO.TempId] = subject; foreach (var EquivalentSubjectId in subjectDTO.EquivalentSubjectsId) { _abstractUnitOfWork.Add(new EquivalentSubject() { FirstSubject = subject.Id, SecoundSubject = EquivalentSubjectId }, UserName()); } } } } foreach (var subjectDTO in addStudyPalnDTO.Subjects.Select(c => c.AddSubjectDTO)) { var subject = tempIdAndSubject[subjectDTO.TempId]; foreach (var DependancySubjectId in subjectDTO.DependencySubjectsId) { var depenacySubjct = tempIdAndSubject[DependancySubjectId]; // if this subject can't depand on another subject if (!_subjectServices.CheckCanBeDepandacy(subject, depenacySubjct)) { var message = new BadRequestErrors(); message.ActionName = "Add Study Plan"; message.ControllerName = "Study Plan"; message.Message = "خطأ في تحديد اعتمادية المواد"; return(Conflict()); } _abstractUnitOfWork.Add( new DependenceSubject() { SubjectId = subject.Id, DependsOnSubjectId = depenacySubjct.Id }, UserName()); } } _abstractUnitOfWork.Commit(); return(Ok()); } catch (Exception) { return(BadRequestAnonymousError()); } }