//public void CreatePDR(ApplicationUser user, UserType userType, DateTime reviewPeriod) //{ // //Create PDR // PDReview pdr = new PDReview(); // { // pdr.UserTypeId = userType.ID; // pdr.ApplicationUserId = user.Id; // pdr.ReviewPeriod = reviewPeriod; // pdr.MidYearStatus = 1; // pdr.FullYearStatus = 1; // pdr.LockedAt = DateTime.Now; // pdr.LockedBy = user.Email; // } // _PDRReviewRepository.Add(pdr); // SavePDR(); // if (pdr != null) // { // // Create Objective // var objectivesTypes = _ObjectiveTyperepository.GetAll().Where(x => x.UserTypeId == userType.ID); // foreach (var objectiveType in objectivesTypes) // { // var objective = new Objective(); // objective.ObjectiveTypeId = objectiveType.ID; // objective.PDReviewId = pdr.ID; // _ObjectiveRepository.Add(objective); // } // var successFactorTypes = _SuccessFactorTypeRepository.GetAll().Where(x => x.UserTypeId == userType.ID); // foreach (var successFactorType in successFactorTypes) // { // var successFactor = new SuccessFactor(); // successFactor.SuccessFactorTypeId = successFactorType.ID; // successFactor.PDReviewId = pdr.ID; // _SuccessFactorRepository.Add(successFactor); // } // SavePDR(); // } //} public void CreatePDR(ApplicationUser user, ApplicationUser reviewUser, DateTime?reviewPeriod = null) { var rPeriod = reviewPeriod.HasValue ? reviewPeriod.Value : GenerateNextAvailableReviewPeriod(reviewUser); if (!IsThisPDRAllReadyExist(reviewUser, rPeriod)) { //Create PDR PDReview pdr = new PDReview(); { pdr.UserTypeId = reviewUser.UserTypeId; pdr.ApplicationUserId = user.Id; pdr.ReviewPeriod = rPeriod; pdr.MidYearStatus = 1; pdr.FullYearStatus = 1; pdr.ReviewerEmailId = reviewUser.UserName; pdr.ReviewerUserId = reviewUser.Id; } _PDRReviewRepository.Add(pdr); SavePDR(); if (pdr != null) { // Create Objective var objectivesTypes = _ObjectiveTyperepository.GetAll().Where(x => x.UserTypeId == reviewUser.UserTypeId); foreach (var objectiveType in objectivesTypes) { var objective = new Objective(); objective.ObjectiveTypeId = objectiveType.ID; objective.PDReviewId = pdr.ID; _ObjectiveRepository.Add(objective); } var successFactorTypes = _SuccessFactorTypeRepository.GetAll().Where(x => x.UserTypeId == reviewUser.UserTypeId); foreach (var successFactorType in successFactorTypes) { var successFactor = new SuccessFactor(); successFactor.SuccessFactorTypeId = successFactorType.ID; successFactor.PDReviewId = pdr.ID; _SuccessFactorRepository.Add(successFactor); } var develpmentCategories = _IDevelopmentCategoryRepository.GetAll().Where(x => x.UserTypeId == reviewUser.UserTypeId); foreach (var develpmentCategory in develpmentCategories) { var pdPlan = new PersonalDevelopmentPlan(); pdPlan.PDReviewId = pdr.ID; _IPersonalDevelopmentPlanRepository.Add(pdPlan); } SavePDR(); } } }
public void AddPerformanceReviewMeeting(EventViewModel eventData, int Userid, int OrganizationId) { Event evenT = Mapper.Map <EventDataModel, Event>(eventData.EventDataModel); evenT.AddedBy = Userid; if (evenT.EventID == 0) { evenT.OrganizationID = OrganizationId; base.Insert(evenT); _unitOfWork.Save(); //setting parent event id with all the events for recurring events base.RepositoryContext.SP_SetParentEventId(eventData.EventDataModel.Reviewee, OrganizationId, evenT.EventID); if (eventData.IsAppointmnet) { Appointment appointment = new Appointment(); appointment.EventId = evenT.EventID; appointment.Event = evenT; appointment.OrganizationID = OrganizationId; this._IAppointmentRepository.Add(appointment, Userid, OrganizationId); } PerformanceReview review = new PerformanceReview(); review.OrganizationID = OrganizationId; review.EventID = evenT.EventID; review.RevieweeUserID = eventData.EventDataModel.Reviewee; review.RecurrencePattern = eventData.EventDataModel.RecurrencePattern; review.RecurrenceEndDate = eventData.EventDataModel.RecurrenceEndDate; if (!string.IsNullOrWhiteSpace(eventData.EventDataModel.RecurrencePattern)) { review.NextReviewDate = CommonMethods.GenerateNextDateFromCronExpression(eventData.EventDataModel.RecurrencePattern); } review.ReviewerUserID = Userid; this._IPerformanceReviewRepository.Add(review, Userid, OrganizationId); _unitOfWork.Save(); this._IRoleResponsibilityRepository.SetRoleResponsibilityOfPerformanceReview(eventData.EventDataModel.Reviewee, review.PerformanceReviewID, OrganizationId); } else { base.Update(evenT); _unitOfWork.Save(); PerformanceReview review = base.RepositoryContext.PerformanceReviews.Where(x => x.EventID == evenT.EventID).FirstOrDefault(); review.RecurrencePattern = eventData.EventDataModel.RecurrencePattern; review.RecurrenceEndDate = eventData.EventDataModel.RecurrenceEndDate; if (!string.IsNullOrWhiteSpace(eventData.EventDataModel.RecurrencePattern)) { review.NextReviewDate = CommonMethods.GenerateNextDateFromCronExpression(eventData.EventDataModel.RecurrencePattern); } this._IPerformanceReviewRepository.Update(review, Userid, OrganizationId); } // for recuurencing event if (!string.IsNullOrWhiteSpace(eventData.EventDataModel.RecurrencePattern)) { base.RepositoryContext.SP_DeletePerformanceReviewEvent(Userid, OrganizationId, eventData.EventDataModel.Reviewee); Event nextEvent = new Event(); nextEvent.Date = CommonMethods.GenerateNextDateFromCronExpression(eventData.EventDataModel.RecurrencePattern); nextEvent.EventType = eventData.EventDataModel.EventType; nextEvent.EventSubType = eventData.EventDataModel.EventSubType; nextEvent.StartTime = eventData.EventDataModel.StartTime; nextEvent.EndTime = eventData.EventDataModel.EndTime; nextEvent.OrganizationID = OrganizationId; nextEvent.Recurring = true; nextEvent.LocationID = eventData.EventDataModel.LocationID; nextEvent.AddedBy = Userid; base.Insert(nextEvent); _unitOfWork.Save(); base.RepositoryContext.SP_SetParentEventId(eventData.EventDataModel.Reviewee, OrganizationId, nextEvent.EventID); foreach (EventAttendeeDataModel model in eventData.EventAttendeeDataModel) { var data = Mapper.Map <EventAttendeeDataModel, EventAttendee>(model); data.EventID = nextEvent.EventID; data.OrganizationId = OrganizationId; _IEventAttendeeRepository.Add(data, Userid, OrganizationId); } } if (evenT.EventID > 0) { //base.RepositoryContext.SP_DeletePerformanceReview(evenT.EventID, OrganizationId); base.RepositoryContext.SP_DeleteEventAgenda(evenT.EventID, OrganizationId); //base.RepositoryContext.SP_DeleteEventAttendees(evenT.EventID, OrganizationId); } foreach (EventAttendeeDataModel model in eventData.EventAttendeeDataModel) { var data = Mapper.Map <EventAttendeeDataModel, EventAttendee>(model); data.EventID = evenT.EventID; data.OrganizationId = OrganizationId; _IEventAttendeeRepository.Add(data, Userid, OrganizationId); } foreach (AgendaDataModel model in eventData.AgendaDataModel) { model.SourceID = evenT.EventID; var data = Mapper.Map <AgendaDataModel, Agendum>(model); data.OrganizationID = OrganizationId; data.CreatedDate = DateTime.Now; data.RevieweeUserId = eventData.EventDataModel.Reviewee; _IAgendaRepository.Add(data, Userid, OrganizationId); } foreach (ObjectiveViewModel model in eventData.ObjectiveViewModel) { var data = Mapper.Map <ObjectiveViewModel, Objective>(model); data.SourceId = evenT.EventID; data.OrganizationId = OrganizationId; data.ObjectiveSource = "P"; data.CreatedDate = DateTime.Now; data.RevieweeUserId = eventData.EventDataModel.Reviewee; _IObjectiveRepository.Add(data, Userid, OrganizationId); } foreach (ActionDataModel model in eventData.ActionDataModel) { model.SourceID = evenT.EventID; var data = Mapper.Map <ActionDataModel, Angular2_AspDotNet.Data.Action>(model); if (model.ActionID == 0) { data.CreatedDate = DateTime.Now; data.RevieweeUserId = eventData.EventDataModel.Reviewee; data.OrganizationID = OrganizationId; _IActionRepository.Add(data, Userid, OrganizationId); } else { _IActionRepository.Update(data, Userid, OrganizationId); base.RepositoryContext.Sp_DeleteActionResponsiblePerson(model.ActionID); } foreach (ActionResponsiblePersonDataModel resposibleModel in model.ActionResponsiblePersonDataModel) { var childData = Mapper.Map <ActionResponsiblePersonDataModel, ActionResponsiblePerson>(resposibleModel); childData.Action = data; childData.AddedBy = LoggedInUserID; childData.OrganizationId = OrganizationId; _IActionResponsiblePersonRepository.Add(childData, Userid, OrganizationId); } } _unitOfWork.Save(); }