示例#1
0
        private async Task CreatePlaqueToContractorAsync(PlaqueToContractorCreateOrUpdateInput input)
        {
            var plaqueToState = _plaqueToStateRepository.Get(input.PlaqueToStateId.Value);

            plaqueToState.LastCode = input.ToCode;
            var plaqueToContractor = ObjectMapper.Map <PlaqueToContractor>(input);
            await _plaqueToStateRepository.UpdateAsync(plaqueToState);

            await _plaqueToContractorRepository.InsertAsync(plaqueToContractor);
        }
示例#2
0
        public async Task CreateOrUpdatePlaqueToContractor(PlaqueToContractorCreateOrUpdateInput input)
        {
            await CheckValidation(input);

            if (input.Id.HasValue)
            {
                await UpdatePlaqueToContractorAsync(input);
            }
            else
            {
                await CreatePlaqueToContractorAsync(input);
            }
        }
示例#3
0
        private async Task CheckValidation(PlaqueToContractorCreateOrUpdateInput input)
        {
            if (input.PlaqueCount <= 0)
            {
                throw new UserFriendlyException(L("ThisCodeRangeHasOverlap"));
            }
            var plaqueToStateQuery = _plaqueToStateRepository.GetAll().AsNoTracking()
                                     .Include(x => x.PlaqueStore)
                                     .Where(x => x.StateInfoId == input.StateInfoId && x.PlaqueStore.SpeciesId == input.SpeciesInfoId && x.ToCode != x.LastCode);
            var plaqueToState = await plaqueToStateQuery.FirstOrDefaultAsync(x => (x.LastCode != 0 && x.ToCode - x.LastCode >= input.PlaqueCount) || (x.LastCode == 0 && x.ToCode - x.FromCode + 1 >= input.PlaqueCount));

            if (plaqueToState != null)
            {
                input.FromCode        = plaqueToState.LastCode != 0 ? +plaqueToState.LastCode + 1 : plaqueToState.FromCode;
                input.ToCode          = input.FromCode + input.PlaqueCount.Value - 1;
                input.PlaqueToStateId = plaqueToState.Id;
            }
            else
            {
                throw new UserFriendlyException(L("RemainInCodeRange", input.PlaqueCount));
            }
        }
示例#4
0
        public async Task <PlaqueToContractorGetForEditOutput> GetPlaqueToContractorForEdit(NullableIdDto <int> input)
        {
            PlaqueToContractor plaqueToContractor = null;

            if (input.Id.HasValue)
            {
                plaqueToContractor = await _plaqueToContractorRepository
                                     .GetAll()
                                     .Include(x => x.PlaqueToState)
                                     .ThenInclude(x => x.PlaqueStore)
                                     .Include(x => x.Contractor)
                                     .ThenInclude(x => x.CityInfo)
                                     .Where(x => x.Id == input.Id.Value)
                                     .FirstOrDefaultAsync();
            }
            //Getting all available roles
            var output = new PlaqueToContractorGetForEditOutput();

            //plaqueToContractor
            var newPlaqueToContractor = new PlaqueToContractorCreateOrUpdateInput();

            newPlaqueToContractor.SetTime = newPlaqueToContractor.SetTime.GetShamsi();
            output.PlaqueToContractor     = plaqueToContractor != null
                ? ObjectMapper.Map <PlaqueToContractorCreateOrUpdateInput>(plaqueToContractor)
                : newPlaqueToContractor;

            //StateInfos
            var user = await UserManager.GetUserByIdAsync(AbpSession.GetUserId());

            var isAdmin = await UserManager.IsInRoleAsync(user, StaticRoleNames.Host.Admin);

            var isSysAdmin = await UserManager.IsInRoleAsync(user, StaticRoleNames.Host.SysAdmin);

            var isStateAdmin = await UserManager.IsInRoleAsync(user, StaticRoleNames.Host.StateAdmin);

            var isCityAdmin = await UserManager.IsInRoleAsync(user, StaticRoleNames.Host.CityAdmin);

            var isOfficer = await UserManager.IsInRoleAsync(user, StaticRoleNames.Host.Officer);

            var stateInfoQuery = _stateInfoRepository.GetAll();

            if (isAdmin || isSysAdmin)
            {
                stateInfoQuery = stateInfoQuery;
            }
            else if (isStateAdmin)
            {
                var union = _unionInfoRepository.FirstOrDefault(x => x.UserId == AbpSession.UserId);
                stateInfoQuery = stateInfoQuery.Where(x => x.Id == union.StateInfoId);
            }
            else if (isCityAdmin)
            {
                var contractor = _contractorRepository.FirstOrDefault(x => x.UserId == AbpSession.UserId);
                stateInfoQuery = stateInfoQuery.Where(x => x.Id == contractor.StateInfoId);
            }
            else
            {
                stateInfoQuery = stateInfoQuery.Where(x => false);
            }
            output.StateInfos = stateInfoQuery
                                .ToList()
                                .Select(c => new ComboboxItemDto(c.Id.ToString(), c.Name))
                                .ToList();

            //ContractorInfos
            if (output.PlaqueToContractor.StateInfoId.HasValue)
            {
                output.Contractors = _contractorRepository
                                     .GetAll()
                                     .Where(x => x.StateInfoId == output.PlaqueToContractor.StateInfoId.Value)
                                     .Select(c => new ComboboxItemDto(c.Id.ToString(), c.Name))
                                     .ToList();
            }

            output.SpeciesInfos = _speciesInfoRepository
                                  .GetAll()
                                  .Select(c => new ComboboxItemDto(c.Id.ToString(), c.Name))
                                  .ToList();

            return(output);
        }
示例#5
0
 private async Task UpdatePlaqueToContractorAsync(PlaqueToContractorCreateOrUpdateInput input)
 {
     var plaqueToContractor = ObjectMapper.Map <PlaqueToContractor>(input);
     await _plaqueToContractorRepository.UpdateAsync(plaqueToContractor);
 }