Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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();
                }
            }
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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) уже существует");
                }
            }
        }
Exemplo n.º 6
0
        public async Task <ObjectModel> Put(int id, [FromBody] ObjectAddEditRequest model)
        {
            var result = await _objectService.UpdateAsync(id, model, User);

            return(result);
        }
Exemplo n.º 7
0
        public async Task <ObjectModel> Post([FromBody] ObjectAddEditRequest model)
        {
            var result = await _objectService.AddAsync(model, User);

            return(result);
        }