public static void Remove(this CarMaterialStock carMaterialStock, InWorkOrderItemDTO workOrderItemDTO) { carMaterialStock.Amount -= workOrderItemDTO.Amount; carMaterialStock.CreatedAt = DateTimeOffset .FromUnixTimeSeconds(workOrderItemDTO.CreatedAt).UtcDateTime; }
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))); }