/// <summary> /// Update tutor in DB /// </summary> /// <param name="id"></param> /// <param name="updatedModel"></param> /// <param name="unitOfWork"></param> /// <returns></returns> public StatusModel Update(int id, TutorModel updatedModel, UnitOfWork <BelibaHomaDBEntities> unitOfWork = null) { var status = new StatusModel(false, String.Empty); var isNeedDisposing = false; var resetFlag = true; try { if (unitOfWork == null) { resetFlag = false; isNeedDisposing = true; unitOfWork = new UnitOfWork <BelibaHomaDBEntities>(); } var tutorRepository = unitOfWork.GetRepository <ITutorRepository>(); var academicInstitutionRepository = unitOfWork.GetRepository <IAcademicInstitutionRepository>(); var academicMajorRepository = unitOfWork.GetRepository <IAcademicMajorRepository>(); var academicInstitution = academicInstitutionRepository.GetByKey(updatedModel.AcademicInstitution.Id); var academicMajor = academicMajorRepository.GetByKey(updatedModel.AcademicMajor.Id); var academicMajor1 = new AcademicMajor(); academicMajor1 = ((updatedModel.AcademicMajor1 != null && updatedModel.AcademicMajor1.Id != 0) ? academicMajorRepository.GetByKey(updatedModel.AcademicMajor1.Id) : null); var tutor = tutorRepository.GetByKey(id); if (tutor != null) { //Running some server side validations if (updatedModel.User.IdNumber.Length != 9) { status.Message = "מספר תעודת הזהות צריך להכיל בדיוק 9 ספרות"; throw new System.ArgumentException(status.Message, "updatedModel"); } if (updatedModel.Birthday > DateTime.Now.AddYears(-15)) { status.Message = "תאריך הלידה של החונך צריך להיות לפחות לפני 15 שנים"; throw new System.ArgumentException(status.Message, "updatedModel"); } if (academicInstitution.InstitutionType == (int)InstitutionType.Mechina && updatedModel.AcademicYear != 0 && updatedModel.SemesterNumber != 0) { status.Message = "החונך במכינה, שנת הלימודים ומספר הסמסטר צריכים להיות 0"; throw new System.ArgumentException(status.Message, "updatedModel"); } if (academicInstitution.InstitutionType != (int)InstitutionType.Mechina && (updatedModel.AcademicYear == 0 || updatedModel.SemesterNumber == 0)) { status.Message = "אם החונך איננו ממוסד מסוג מכינה, על מספר הסמסטר והשנה האקדמית להיות שונים מ-0"; throw new System.ArgumentException(status.Message, "updatedModel"); } if (updatedModel.User.Area != null && academicInstitution.Area != (int)updatedModel.User.Area) { status.Message = "המוסד האקדמי של החונך נמצא באזור פעילות שונה מהאזור שהוזן לחונך"; throw new System.ArgumentException(status.Message, "updatedModel"); } if (updatedModel.User.IsActive == false && tutor.User.IsActive == true) { var tutortraineeRepository = unitOfWork.GetRepository <ITutorTraineeRepository>(); var tutortrainees = tutortraineeRepository.GetAll().Where(tt => tt.TutorId == tutor.UserId && tt.Status == (int)TTStatus.Active).ToList(); if (tutortrainees.Count > 0) { foreach (var tt in tutortrainees) { var result = new StatusModel <TutorTraineeModel>(false, String.Empty, new TutorTraineeModel()); result = _tutorTraineeService.ChangeStatus(tt.Id); if (result.Success == false) { status.Message = "בעיה בהפיכת קשרי החונכות של החונך ללא פעילים"; throw new System.ArgumentException(status.Message, "updatedModel"); } } } } //Updating the entity from the model received by the form tutor.User.FirstName = updatedModel.User.FirstName; tutor.User.LastName = updatedModel.User.LastName; tutor.User.Email = updatedModel.User.Email; tutor.User.IdNumber = updatedModel.User.IdNumber; tutor.User.IsActive = updatedModel.User.IsActive; tutor.User.UpdateTime = DateTime.Now; if (updatedModel.User.Area != null) { tutor.User.Area = (int?)updatedModel.User.Area; } tutor.Address = updatedModel.Address; tutor.Gender = (int)updatedModel.Gender; tutor.Birthday = updatedModel.Birthday; tutor.AcademicYear = updatedModel.AcademicYear; tutor.SemesterNumber = updatedModel.SemesterNumber; tutor.PhoneNumber = updatedModel.PhoneNumber; tutor.PhysicsLevel = (int)updatedModel.PhysicsLevel; tutor.MathLevel = (int)updatedModel.MathLevel; tutor.EnglishLevel = (int)updatedModel.EnglishLevel; if (resetFlag) { tutor.TutorHours = updatedModel.TutorHours; tutor.TutorHoursBonding = updatedModel.TutorHoursBonding; } //Linked Entities - need to verify Academic Institutions and Majors tutor.AcademicInstitution = academicInstitution; tutor.AcademicInstitutionId = academicInstitution.Id; tutor.AcademicMajor = academicMajor; tutor.AcademicMajorId = academicMajor.Id; tutor.AcademicMajor1 = academicMajor1; if (academicMajor1 != null) { tutor.AcademicMinorId = academicMajor1.Id; } else { tutor.AcademicMinorId = null; } if (isNeedDisposing) { unitOfWork.SaveChanges(); unitOfWork.Dispose(); } status.Success = true; status.Message = String.Format("פרטי החונך {0} עודכנו בהצלחה", updatedModel.FullName); } } catch (Exception ex) { if (status.Message == String.Empty) { status.Message = String.Format("שגיאה במהלך עדכון פרטי החונך"); } LogService.Logger.Error(status.Message, ex); } return(status); }
/// <summary> /// Add new Tutor /// </summary> /// <param name="model"></param> /// <returns></returns> public StatusModel Add(TutorModel model) { var status = new StatusModel(false, String.Empty); try { using (var unitOfWork = new UnitOfWork <BelibaHomaDBEntities>()) { //Updating the User Role in the model model.User.UserRole = UserRole.Tutor; //Retrieving Related Entities by using the repositories and GetById function (all but User which was not yet created) var academicInstitutionRepository = unitOfWork.GetRepository <IAcademicInstitutionRepository>(); var academicInstitution = academicInstitutionRepository.GetByKey(model.AcademicInstitution.Id); var academicMajorRepository = unitOfWork.GetRepository <IAcademicMajorRepository>(); var academicMajor = academicMajorRepository.GetByKey(model.AcademicMajor.Id); var academicMajor1 = new AcademicMajor(); academicMajor1 = model.AcademicMajor1.Id != 0 ? academicMajorRepository.GetByKey(model.AcademicMajor1.Id) : null; var userRepository = unitOfWork.GetRepository <IUserRepository>(); //Running some server side validations if (model.User.IdNumber.Length != 9) { status.Message = "מספר תעודת הזהות צריך להכיל בדיוק 9 ספרות"; throw new System.ArgumentException(status.Message, "model"); } if (model.Birthday > DateTime.Now.AddYears(-15)) { status.Message = "תאריך הלידה של החונך צריך להיות לפחות לפני 15 שנים"; throw new System.ArgumentException(status.Message, "model"); } if (academicInstitution.InstitutionType == (int)InstitutionType.Mechina && model.AcademicYear != 0 && model.SemesterNumber != 0) { status.Message = "החונך במכינה, שנת הלימודים ומספר הסמסטר צריכים להיות 0"; throw new System.ArgumentException(status.Message, "model"); } if (academicInstitution.InstitutionType != (int)InstitutionType.Mechina && (model.AcademicYear == 0 || model.SemesterNumber == 0)) { status.Message = "אם החונך איננו ממוסד מסוג מכינה, על מספר הסמסטר והשנה האקדמית להיות שונים מ-0"; throw new System.ArgumentException(status.Message, "model"); } if (model.User.Area != null && academicInstitution.Area != (int)model.User.Area) { status.Message = "המוסד האקדמי של החונך נמצא באזור פעילות שונה מהאזור שהוזן לחונך"; throw new System.ArgumentException(status.Message, "model"); } //Adding the User Model to the DB (By using the Add function in UserService) var userStatus = _userService.Add(model.User); if (userStatus.Success) { //Get the new user entity from DB (also linked to Tutor) var user = userRepository.GetByKey(userStatus.Data); //Updating "not input" fields in Tutor model model.TutorHours = 0; model.TutorHoursBonding = 0; //Mapping the model into Tutor Entity var tutorRepository = unitOfWork.GetRepository <ITutorRepository>(); var entity = model.MapTo <Tutor>(); //Linking the Complexed entities to the retrieved ones entity.AcademicInstitution = academicInstitution; entity.AcademicMajor = academicMajor; entity.AcademicMajor1 = academicMajor1; entity.User = user; entity.AcademicInstitutionId = academicInstitution.Id; entity.AcademicMajorId = academicMajor.Id; if (model.AcademicMajor1.Id != 0) { entity.AcademicMinorId = academicMajor1.Id; } entity.UserId = user.Id; //Finally Adding the entity to DB tutorRepository.Add(entity); unitOfWork.SaveChanges(); //If we got here - Yay! :) status.Success = true; status.Message = String.Format("חונך {0} הוזן בהצלחה", model.User.FullName); } else { status.Message = userStatus.Message; } } } catch (Exception ex) { if (status.Message == String.Empty) { status.Message = String.Format("שגיאה במהלך הוספת החונך"); } LogService.Logger.Error(status.Message, ex); } return(status); }
public AcademicMajorModel(AcademicMajor entity) : base(entity) { }