private async Task HandleBlock(int objectId, Granit block, ObjectAddEditRequest request) { if (request.BlockTypeId.HasValue) { if (block != null) { block.BlockNumber = request.BlockNumber; block.BlockTypeId = request.BlockTypeId.Value; await _granitRepository.UpdateAsync(block); } else { var granit = new Granit { ObjectId = objectId, BlockNumber = request.BlockNumber, BlockTypeId = request.BlockTypeId.Value }; await _granitRepository.AddAsync(granit); } } else { if (block != null) { await _granitRepository.DeleteByIdAsync(block.Id); } } }
public async Task <ObjectModel> UpdateAsync(int id, ObjectAddEditRequest request, ClaimsPrincipal principal) { var entity = await _objectRepository.GetByIdWithBlockAsync(id); var block = entity.Block; entity.Block = null; var oldEntity = entity.Clone(); await Validate(request, entity); await SetNewValues(entity, request); var result = await _objectRepository.UpdateAsync(entity); await HandleBlock(entity.Id, block, request); if (request.UpdateBusRoutes) { await _busDataRepository.UpdateBusRoutes(result); } await _eventLogCreator.CreateLog(principal, EventEnum.Update, oldEntity, result); return(await GetByIdAsync(result.Id)); }
private async Task SetNewValues(Objects entity, ObjectAddEditRequest request) { entity.Name = request.Name; entity.CarBrandId = request.CarBrandId; entity.YearRelease = request.YearRelease; entity.Phone = request.Phone; entity.ProviderId = request.ProviderId; if (entity.CarBrandId.HasValue) { entity.CarTypeId = await _carBrandRepository.GetCarTypeIdByBrandId(entity.CarBrandId.Value); } else { entity.CarTypeId = null; } if (entity.LastRouteId != request.RouteId) { entity.LastRouteId = request.RouteId; if (entity.LastRouteId.HasValue) { var project = await _projectRepository.GetProjectByRouteIdAsync(entity.LastRouteId.Value); entity.ProjectId = project.Id; } else { entity.ProjectId = 0; } } if (entity.ObjId == 0) { entity.ObjId = await _objectRepository.GetNextObjectIdAsync(); } else { var entityId = entity.Id > 0 ? entity.Id : (int?)null; var needUpdateObjId = await _objectRepository.AnyByObjIdProjIdAsync(entity.ObjId, entity.ProjectId, entityId); if (needUpdateObjId) { entity.ObjId = await _objectRepository.GetNextObjectIdAsync(); } } }
public async Task <ObjectModel> AddAsync(ObjectAddEditRequest request, ClaimsPrincipal principal) { await Validate(request, null); var entity = new Objects() { ObjectOutput = true, DateInserted = DateTime.Now, ObjectOutputDate = DateTime.Now }; await SetNewValues(entity, request); var result = await _objectRepository.AddAsync(entity); await HandleBlock(result.Id, null, request); await _eventLogCreator.CreateLog(principal, EventEnum.Create, null, result); return(await GetByIdAsync(result.Id)); }
private async Task Validate(ObjectAddEditRequest request, Objects existingEntity) { if (existingEntity == null || existingEntity.Name != request.Name) { var ifAlreadyExist = await _objectRepository.AnyByPlateNumberAsync(request.Name, existingEntity?.Id); if (ifAlreadyExist) { throw new InvalidOperationException("ТС c таким номером уже существует"); } } if (existingEntity == null || existingEntity.Phone != request.Phone) { var ifAlreadyExist = await _objectRepository.AnyByPhoneAsync(request.Phone, existingEntity?.Id); if (ifAlreadyExist) { throw new InvalidOperationException("ТС c таким номером телефона (IMEI) уже существует"); } } }
public async Task <ObjectModel> Put(int id, [FromBody] ObjectAddEditRequest model) { var result = await _objectService.UpdateAsync(id, model, User); return(result); }
public async Task <ObjectModel> Post([FromBody] ObjectAddEditRequest model) { var result = await _objectService.AddAsync(model, User); return(result); }