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