Example #1
0
 public static void Remove(this CarMaterialStock carMaterialStock,
                           InWorkOrderItemDTO workOrderItemDTO)
 {
     carMaterialStock.Amount   -= workOrderItemDTO.Amount;
     carMaterialStock.CreatedAt = DateTimeOffset
                                  .FromUnixTimeSeconds(workOrderItemDTO.CreatedAt).UtcDateTime;
 }
Example #2
0
 public static WorkOrderItem Map(string workOrderId,
                                 InWorkOrderItemDTO workOrderItemDTO)
 {
     return(new WorkOrderItem
     {
         WorkOrderId = workOrderId,
         MaterialId = workOrderItemDTO.MaterialId,
         Amount = workOrderItemDTO.Amount,
         CreatedAt = DateTimeOffset
                     .FromUnixTimeSeconds(workOrderItemDTO.CreatedAt).UtcDateTime
     });
 }
        public async Task <IActionResult> CreateWorkOrderItemAsync([FromRoute] string id,
                                                                   [FromBody] InWorkOrderItemDTO workOrderItemDTO)
        {
            var workOrder = await _repositoryManager.WorkOrderRepository.GetAsync(id);

            if (workOrder == null)
            {
                return(NotFound());
            }

            var userId = HttpContext.User.GetUserId();

            if (!HttpContext.User.IsAdministrator() &&
                !await _repositoryManager.CarRepository
                .IsActiveCarAssignmentAsync(workOrder.CarId, userId.Value) ||
                workOrder.Locked)
            {
                return(Forbid());
            }

            var carMaterialStock = await _repositoryManager.CarRepository
                                   .GetMaterialForCarAsync(workOrder.CarId, workOrderItemDTO.MaterialId);

            if (carMaterialStock == null)
            {
                return(NotFound());
            }

            if (carMaterialStock.Amount < workOrderItemDTO.Amount)
            {
                return(BadRequest());
            }

            var orderItem = WorkOrderItemMapper.Map(workOrder.Id, workOrderItemDTO);

            orderItem = _repositoryManager.WorkOrderItemRepository.Create(orderItem);

            carMaterialStock.Remove(workOrderItemDTO);

            await _repositoryManager.SaveAsync();

            return(Ok(WorkOrderItemMapper.Map(orderItem)));
        }