public IActionResult CreateMaterial([FromBody] MaterialCreationRequest materialCreationRequest) { if (materialCreationRequest == null || string.IsNullOrWhiteSpace(materialCreationRequest.Name) || string.IsNullOrWhiteSpace(materialCreationRequest.Manufacturer) || string.IsNullOrWhiteSpace(materialCreationRequest.ManufacturerId) || string.IsNullOrWhiteSpace(materialCreationRequest.Type)) { return(HandleBadRequest("Incomplete or invalid material data submitted for creation.")); } // Check for material type validity Plastic plastic = null; try { plastic = PlasticsService.GetPlastic(materialCreationRequest.Type); } catch (PlasticNotFoundException exception) { return(HandleBadRequest(exception.Message)); } // Proceed with creation try { Material material = MaterialsService.CreateMaterial(materialCreationRequest.Name, materialCreationRequest.Manufacturer, materialCreationRequest.ManufacturerId, plastic); return(Created(GetNewResourceUri(material.Id), material)); } catch (Exception exception) { return(HandleUnexpectedException(exception)); } }
/// <summary> /// Initializes a new instance of the <see cref="MaterialsController"/> class. /// </summary> /// <param name="loggerFactory">A factory to create loggers from.</param> /// <param name="plasticsService">Grants access to known plastics.</param> /// <param name="materialsService">The materials service.</param> /// <param name="customMaterialPropService">Grants access to custom material props.</param> public MaterialsController(ILoggerFactory loggerFactory, PlasticsService plasticsService, MaterialsService materialsService, CustomMaterialPropService customMaterialPropService) { Logger = loggerFactory.CreateLogger <MaterialsController>(); PlasticsService = plasticsService; MaterialsService = materialsService; CustomMaterialPropService = customMaterialPropService; }
public IActionResult GetMaterials( [FromQuery] bool getAll = false, [FromQuery] int page = 1, [FromQuery] int elementsPerPage = 10, [FromQuery] string search = null, [FromQuery] string manufacturer = null, [FromQuery] string type = null) { if (!getAll && (page < 1 || elementsPerPage < 1)) { return(HandleBadRequest("Bad pagination parameters.")); } // Check for material type validity Plastic plastic = null; if (type != null) { try { plastic = PlasticsService.GetPlastic(type); } catch (PlasticNotFoundException exception) { return(HandleBadRequest(exception.Message)); } } // Get, filter and paginate materials try { IEnumerable <Material> materials = MaterialsService.GetMaterials(search, manufacturer, plastic); IEnumerable <Material> paginatedMaterials = materials; if (!getAll) { paginatedMaterials = materials.Skip((page - 1) * elementsPerPage).Take(elementsPerPage); } return(Ok(new PaginatedResponse(paginatedMaterials, materials.Count()))); } catch (Exception exception) { return(HandleUnexpectedException(exception)); } }
public IActionResult UpdateMaterialMasterData(int id, [FromBody] MaterialUpdateRequest materialUpdateRequest) { if (materialUpdateRequest == null || string.IsNullOrWhiteSpace(materialUpdateRequest.Name) || string.IsNullOrWhiteSpace(materialUpdateRequest.Manufacturer) || string.IsNullOrWhiteSpace(materialUpdateRequest.ManufacturerId) || string.IsNullOrWhiteSpace(materialUpdateRequest.Type)) { return(HandleBadRequest("Incomplete or invalid material data submitted for update.")); } // Check for material type validity Plastic plastic = null; try { plastic = PlasticsService.GetPlastic(materialUpdateRequest.Type); } catch (PlasticNotFoundException exception) { return(HandleBadRequest(exception.Message)); } // Proceed with updating try { Material material = MaterialsService.UpdateMaterial(id, materialUpdateRequest.Name, materialUpdateRequest.Manufacturer, materialUpdateRequest.ManufacturerId, plastic); return(Ok(material)); } catch (MaterialNotFoundException exception) { return(HandleResourceNotFoundException(exception)); } catch (Exception exception) { return(HandleUnexpectedException(exception)); } }
/// <summary> /// Initializes a new instance of the <see cref="PlasticsController"/> class. /// </summary> /// <param name="loggerFactory">A factory to create loggers from.</param> public PlasticsController(ILoggerFactory loggerFactory, PlasticsService plasticsService) { Logger = loggerFactory.CreateLogger <PlasticsController>(); PlasticsService = plasticsService; }