public ActionResult addCatalogueCollectionProduct(long commercialCatalogueId, long customizedProductCollectionId, [FromBody] AddCatalogueCollectionProductModelView addCatalogueCollectionProductModelView) { if (addCatalogueCollectionProductModelView == null) { return(BadRequest(new SimpleJSONMessageService(INVALID_REQUEST_BODY_MESSAGE))); } try { addCatalogueCollectionProductModelView.commercialCatalogueId = commercialCatalogueId; addCatalogueCollectionProductModelView.customizedProductCollectionId = customizedProductCollectionId; GetCommercialCatalogueModelView commercialCatalogueModelView = new core.application.CommercialCatalogueController() .addCatalogueCollectionProduct(addCatalogueCollectionProductModelView); return(Ok(commercialCatalogueModelView)); } catch (ResourceNotFoundException e) { return(NotFound(new SimpleJSONMessageService(e.Message))); } catch (ArgumentException e) { return(BadRequest(new SimpleJSONMessageService(e.Message))); } catch (Exception) { return(StatusCode(500, new SimpleJSONMessageService(UNEXPECTED_ERROR))); } }
/// <summary> /// Adds a CustomizedProduct to the CatalogueCollection. /// </summary> /// <param name="addCatalogueCollectionProductModelView">AddCatalogueCollectionProductModelView with the data used </param> /// <returns></returns> /// <exception cref="ResourceNotFoundException"> /// Thrown when no instance of CommercialCatalogue or CatalogueCollection could be found with the provided identifiers. /// </exception> /// <exception cref="System.ArgumentException"> /// Thrown when the CustomizedProduct being added does not exist in a given CustomizedProductCollection. /// </exception> public GetCommercialCatalogueModelView addCatalogueCollectionProduct(AddCatalogueCollectionProductModelView addCatalogueCollectionProductModelView) { CommercialCatalogueRepository catalogueRepository = PersistenceContext.repositories().createCommercialCatalogueRepository(); CommercialCatalogue commercialCatalogue = catalogueRepository.find(addCatalogueCollectionProductModelView.commercialCatalogueId); if (commercialCatalogue == null) { throw new ResourceNotFoundException(string.Format(CATALOGUE_NOT_FOUND_BY_ID, addCatalogueCollectionProductModelView.commercialCatalogueId)); } CatalogueCollection catalogueCollection = commercialCatalogue.catalogueCollectionList .Where(cc => cc.customizedProductCollectionId == addCatalogueCollectionProductModelView.customizedProductCollectionId).SingleOrDefault(); if (catalogueCollection == null) { throw new ResourceNotFoundException(string.Format( CATALOGUE_COLLECTION_NOT_FOUND_BY_ID, addCatalogueCollectionProductModelView.commercialCatalogueId, addCatalogueCollectionProductModelView.customizedProductCollectionId) ); } //retrieve the instance of CustomizedProduct from the the CustomizedProductCollection linked to the CatalogueCollection CustomizedProduct customizedProduct = catalogueCollection.customizedProductCollection.collectionProducts .Where(cp => cp.customizedProductId == addCatalogueCollectionProductModelView.customizedProductId) .Select(cp => cp.customizedProduct).SingleOrDefault(); if (customizedProduct == null) { throw new ArgumentException(string.Format( CUSTOMIZED_PRODUCT_NOT_FOUND_BY_ID, addCatalogueCollectionProductModelView.customizedProductId, addCatalogueCollectionProductModelView.customizedProductCollectionId )); } catalogueCollection.addCustomizedProduct(customizedProduct); commercialCatalogue = catalogueRepository.update(commercialCatalogue); return(CommercialCatalogueModelViewService.fromEntity(commercialCatalogue)); }