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); }
public async Task CreateOrUpdatePlaqueToContractor(PlaqueToContractorCreateOrUpdateInput input) { await CheckValidation(input); if (input.Id.HasValue) { await UpdatePlaqueToContractorAsync(input); } else { await CreatePlaqueToContractorAsync(input); } }
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)); } }
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); }
private async Task UpdatePlaqueToContractorAsync(PlaqueToContractorCreateOrUpdateInput input) { var plaqueToContractor = ObjectMapper.Map <PlaqueToContractor>(input); await _plaqueToContractorRepository.UpdateAsync(plaqueToContractor); }