public OpexVolumeBasedRate UpdateOpexVolumeBasedRate(OpexVolumeBasedRate opexVolumeBasedRate)
        {
            return(ExecuteFaultHandledOperation(() =>
            {
                var groupNames = new List <string>()
                {
                    BudgetModuleDefinition.GROUP_ADMINISTRATOR, BudgetModuleDefinition.GROUP_BUSINESS
                };
                AllowAccessToOperation(BudgetModuleDefinition.SOLUTION_NAME, groupNames);

                IOpexVolumeBasedRateRepository opexVolumeBasedRateRepository = _DataRepositoryFactory.GetDataRepository <IOpexVolumeBasedRateRepository>();

                OpexVolumeBasedRate updatedEntity = null;

                if (opexVolumeBasedRate.OpexVolumeBasedRateId == 0)
                {
                    updatedEntity = opexVolumeBasedRateRepository.Add(opexVolumeBasedRate);
                }
                else
                {
                    updatedEntity = opexVolumeBasedRateRepository.Update(opexVolumeBasedRate);
                }

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

                IOpexVolumeBasedRateRepository opexVolumeBasedRateRepository = _DataRepositoryFactory.GetDataRepository <IOpexVolumeBasedRateRepository>();

                opexVolumeBasedRateRepository.Remove(opexVolumeBasedRateId);
            });
        }
        public OpexVolumeBasedRate GetOpexVolumeBasedRate(int opexVolumeBasedRateId)
        {
            return(ExecuteFaultHandledOperation(() =>
            {
                var groupNames = new List <string>()
                {
                    BudgetModuleDefinition.GROUP_ADMINISTRATOR, BudgetModuleDefinition.GROUP_BUSINESS
                };
                AllowAccessToOperation(BudgetModuleDefinition.SOLUTION_NAME, groupNames);

                IOpexVolumeBasedRateRepository opexVolumeBasedRateRepository = _DataRepositoryFactory.GetDataRepository <IOpexVolumeBasedRateRepository>();

                OpexVolumeBasedRate opexVolumeBasedRateEntity = opexVolumeBasedRateRepository.Get(opexVolumeBasedRateId);
                if (opexVolumeBasedRateEntity == null)
                {
                    NotFoundException ex = new NotFoundException(string.Format("OpexVolumeBasedRate with ID of {0} is not in database", opexVolumeBasedRateId));
                    throw new FaultException <NotFoundException>(ex, ex.Message);
                }

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

                IOpexVolumeBasedRateRepository opexVolumeBasedRateRepository = _DataRepositoryFactory.GetDataRepository <IOpexVolumeBasedRateRepository>();

                List <OpexVolumeBasedRateData> opexVolumeBasedRate = new List <OpexVolumeBasedRateData>();
                IEnumerable <OpexVolumeBasedRateInfo> opexVolumeBasedRateInfos = opexVolumeBasedRateRepository.GetOpexVolumeBasedRates(year, reviewCode).ToArray();

                foreach (var opexVolumeBasedRateInfo in opexVolumeBasedRateInfos)
                {
                    opexVolumeBasedRate.Add(
                        new OpexVolumeBasedRateData
                    {
                        OpexVolumeBasedRateId = opexVolumeBasedRateInfo.OpexVolumeBasedRate.EntityId,
                        Year = opexVolumeBasedRateInfo.OpexVolumeBasedRate.Year,
                        ReviewCode = opexVolumeBasedRateInfo.OpexVolumeBasedRate.ReviewCode,
                        CenterType = opexVolumeBasedRateInfo.OpexVolumeBasedRate.CenterType,
                        DefintionCode = opexVolumeBasedRateInfo.TeamDefinition.Code,
                        DefintionName = opexVolumeBasedRateInfo.TeamDefinition.Name,
                        ItemCode = opexVolumeBasedRateInfo.OpexItem.Code,
                        ItemName = opexVolumeBasedRateInfo.OpexItem.Name,
                        MisCode = opexVolumeBasedRateInfo.Team.Code,
                        MisName = opexVolumeBasedRateInfo.Team.Name,
                        Active = opexVolumeBasedRateInfo.OpexVolumeBasedRate.Active
                    });
                }

                return opexVolumeBasedRate.ToArray();
            }));
        }