public PayStructure UpdatePayStructure(PayStructure payStructure)
        {
            return(ExecuteFaultHandledOperation(() =>
            {
                var groupNames = new List <string>()
                {
                    BudgetModuleDefinition.GROUP_ADMINISTRATOR, BudgetModuleDefinition.GROUP_BUSINESS
                };
                AllowAccessToOperation(BudgetModuleDefinition.SOLUTION_NAME, groupNames);

                IPayStructureRepository payStructureRepository = _DataRepositoryFactory.GetDataRepository <IPayStructureRepository>();

                PayStructure updatedEntity = null;

                if (payStructure.PayStructureId == 0)
                {
                    updatedEntity = payStructureRepository.Add(payStructure);
                }
                else
                {
                    updatedEntity = payStructureRepository.Update(payStructure);
                }

                return updatedEntity;
            }));
        }
        public void DeletePayStructure(int payStructureId)
        {
            ExecuteFaultHandledOperation(() =>
            {
                var groupNames = new List <string>()
                {
                    BudgetModuleDefinition.GROUP_ADMINISTRATOR, BudgetModuleDefinition.GROUP_BUSINESS
                };
                AllowAccessToOperation(BudgetModuleDefinition.SOLUTION_NAME, groupNames);

                IPayStructureRepository payStructureRepository = _DataRepositoryFactory.GetDataRepository <IPayStructureRepository>();

                payStructureRepository.Remove(payStructureId);
            });
        }
        public PayStructure[] GetAllPayStructures()
        {
            return(ExecuteFaultHandledOperation(() =>
            {
                var groupNames = new List <string>()
                {
                    BudgetModuleDefinition.GROUP_ADMINISTRATOR, BudgetModuleDefinition.GROUP_BUSINESS
                };
                AllowAccessToOperation(BudgetModuleDefinition.SOLUTION_NAME, groupNames);

                IPayStructureRepository payStructureRepository = _DataRepositoryFactory.GetDataRepository <IPayStructureRepository>();

                IEnumerable <PayStructure> payStructures = payStructureRepository.Get().ToArray();

                return payStructures.ToArray();
            }));
        }
        public PayStructure GetPayStructure(int payStructureId)
        {
            return(ExecuteFaultHandledOperation(() =>
            {
                var groupNames = new List <string>()
                {
                    BudgetModuleDefinition.GROUP_ADMINISTRATOR, BudgetModuleDefinition.GROUP_BUSINESS
                };
                AllowAccessToOperation(BudgetModuleDefinition.SOLUTION_NAME, groupNames);

                IPayStructureRepository payStructureRepository = _DataRepositoryFactory.GetDataRepository <IPayStructureRepository>();

                PayStructure payStructureEntity = payStructureRepository.Get(payStructureId);
                if (payStructureEntity == null)
                {
                    NotFoundException ex = new NotFoundException(string.Format("PayStructure with ID of {0} is not in database", payStructureId));
                    throw new FaultException <NotFoundException>(ex, ex.Message);
                }

                return payStructureEntity;
            }));
        }
        public PayStructureData[] GetPayStructures(string year, string reviewCode)
        {
            return(ExecuteFaultHandledOperation(() =>
            {
                var groupNames = new List <string>()
                {
                    BudgetModuleDefinition.GROUP_ADMINISTRATOR, BudgetModuleDefinition.GROUP_BUSINESS
                };
                AllowAccessToOperation(BudgetModuleDefinition.SOLUTION_NAME, groupNames);

                IPayStructureRepository payStructureRepository = _DataRepositoryFactory.GetDataRepository <IPayStructureRepository>();

                List <PayStructureData> payStructure = new List <PayStructureData>();
                IEnumerable <PayStructureInfo> payStructureInfos = payStructureRepository.GetPayStructures(year, reviewCode).ToArray();

                foreach (var payStructureInfo in payStructureInfos)
                {
                    payStructure.Add(
                        new PayStructureData
                    {
                        PayStructureId = payStructureInfo.PayStructure.EntityId,
                        Year = payStructureInfo.PayStructure.Year,
                        ClassificationCode = payStructureInfo.PayStructure.ClassificationCode,
                        ClassificationName = payStructureInfo.PayClassification.Name,
                        GradeCode = payStructureInfo.Grade.Code,
                        GradeName = payStructureInfo.Grade.Name,
                        GrossPay = payStructureInfo.PayStructure.GrossPay,
                        ReviewCode = payStructureInfo.PayStructure.ReviewCode,
                        ThirtheenMonth = payStructureInfo.PayStructure.ThirtheenMonth,
                        Active = payStructureInfo.PayStructure.Active
                    });
                }

                return payStructure.ToArray();
            }));
        }