예제 #1
0
        //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();
                }
            }
        }
예제 #2
0
        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();
        }