public IActionResult CreateProduct([FromBody] ProductForCreationDTO product)
        {
            if (product == null)
            {
                return(BadRequest());
            }

            // Validate data
            if (!ModelState.IsValid)
            {
                // return 422
                return(new UnprocessableEntityObjectResult(ModelState));
            }

            var productEntity = Mapper.Map <Product>(product);

            _supermarketRepository.AddProduct(productEntity);

            if (!_supermarketRepository.Save())
            {
                throw new Exception("Creating a product failed on Save.");
            }

            var productToReturn = Mapper.Map <ProductDTO>(productEntity);

            var links = CreateLinksForProduct(productToReturn.ProductId, null);

            var linkedResourceToReturn = productToReturn.ShapeData(null)
                                         as IDictionary <string, object>;

            linkedResourceToReturn.Add("links", links);

            return(CreatedAtRoute("GetProduct", new { ProductId = linkedResourceToReturn["ProductId"] }, linkedResourceToReturn));
        }
        public IActionResult CreateStaffMember([FromBody] StaffMemberForCreationDTO staffMember)
        {
            if (staffMember == null)
            {
                return(BadRequest());
            }

            // Validate data
            if (!ModelState.IsValid || !_supermarketRepository.SupermarketExists(staffMember.SupermarketId))
            {
                // return 422
                return(new UnprocessableEntityObjectResult(ModelState));
            }

            var staffMemberEntity = Mapper.Map <StaffMember>(staffMember);

            _supermarketRepository.AddStaffMember(staffMemberEntity);

            if (!_supermarketRepository.Save())
            {
                throw new Exception("Creating a staff member failed on Save.");
            }

            var staffMemberToReturn = Mapper.Map <StaffMemberDTO>(staffMemberEntity);

            var links = CreateLinksForStaffMember(staffMemberToReturn.Id, null);

            var linkedResourceToReturn = staffMemberToReturn.ShapeData(null)
                                         as IDictionary <string, object>;

            linkedResourceToReturn.Add("links", links);

            return(CreatedAtRoute("GetStaffMember", new { id = linkedResourceToReturn["Id"] }, linkedResourceToReturn));
        }
Exemplo n.º 3
0
        public IActionResult CreateSupermarketStock([FromBody] SupermarketStockForCreationDTO stock)
        {
            // check a new stock was passed in
            if (stock == null)
            {
                return(BadRequest());
            }

            // Validate data
            if (!ModelState.IsValid || !_supermarketRepository.SupermarketExists(stock.SupermarketId) || !_supermarketRepository.ProductExists(stock.ProductId))
            {
                // return 422
                return(new UnprocessableEntityObjectResult(ModelState));
            }

            // make sure productId and supermarketId don't match an existing entry
            if (_supermarketRepository.SupermarketStockExists(stock.ProductId, stock.SupermarketId))
            {
                // return 409
                return(StatusCode(409));
            }

            // map stock
            var stockEntity = Mapper.Map <SupermarketStock>(stock);

            // add stock and save
            _supermarketRepository.AddSupermarketStock(stockEntity);

            if (!_supermarketRepository.Save())
            {
                throw new Exception("Creating stock failed on Save.");
            }

            var stockToReturn = Mapper.Map <SupermarketStockDTO>(stockEntity);

            var links = CreateLinksForSupermarketStock(stockToReturn.Id, null);

            var linkedResourceToReturn = stockToReturn.ShapeData(null)
                                         as IDictionary <string, object>;

            linkedResourceToReturn.Add("links", links);

            return(CreatedAtRoute("GetStock", new { id = linkedResourceToReturn["Id"] }, linkedResourceToReturn));
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            _supermarketRepository = new SupermarketRepository();
            var supermarketProvider = new SupermarketProvider();
            var productSpecProvider = new ProductSpecificationsProvider();

            _buyerProvider             = new BuyerProvider();
            _shelfSelectionAlgorithm   = new ShelfSelectionAlgorithm();
            _cashboxSelectionAlgorithm = new CashboxSelectionAlgorithm();

            _supermarket = supermarketProvider.Provide(productSpecProvider.Provide(30), 5);
            _supermarketRepository.Save(_supermarket);

            EnterBuyers(10);
            Console.ReadLine();
        }
        public IActionResult CreateSupermarketStockCollection([FromBody] IEnumerable <SupermarketStockForCreationDTO> supermarketStockCollection)
        {
            if (supermarketStockCollection == null)
            {
                return(BadRequest());
            }

            // Validate data
            foreach (SupermarketStockForCreationDTO s in supermarketStockCollection)
            {
                if (!ModelState.IsValid || !_supermarketRepository.SupermarketExists(s.SupermarketId) || !_supermarketRepository.ProductExists(s.ProductId))
                {
                    // return 422
                    return(new UnprocessableEntityObjectResult(ModelState));
                }

                // make sure productId and supermarketId don't match an existing entry
                if (_supermarketRepository.SupermarketStockExists(s.ProductId, s.SupermarketId))
                {
                    // return 409
                    return(StatusCode(409));
                }
            }

            var supermarketStockEntities = Mapper.Map <IEnumerable <SupermarketStock> >(supermarketStockCollection);

            foreach (var supermarketStock in supermarketStockEntities)
            {
                _supermarketRepository.AddSupermarketStock(supermarketStock);
            }

            if (!_supermarketRepository.Save())
            {
                throw new Exception("Creating a supermarket stock collection failed on save.");
            }

            var supermarketStockCollectionToReturn = Mapper.Map <IEnumerable <SupermarketStockDTO> >(supermarketStockEntities);
            var idsAsString = string.Join(",", supermarketStockCollectionToReturn.Select(s => s.Id));

            return(CreatedAtRoute("GetSupermarketStockCollection",
                                  new { ids = idsAsString },
                                  supermarketStockCollectionToReturn));
        }
        public IActionResult CreateSupermarketCollection([FromBody] IEnumerable <SupermarketForCreationDTO> supermarketCollection)
        {
            // check collection was supplied by user
            if (supermarketCollection == null)
            {
                return(BadRequest());
            }

            // Validate data
            foreach (SupermarketForCreationDTO s in supermarketCollection)
            {
                if (!ModelState.IsValid)
                {
                    // return 422
                    return(new UnprocessableEntityObjectResult(ModelState));
                }
            }

            // map data
            var supermarketEntities = Mapper.Map <IEnumerable <Supermarket> >(supermarketCollection);

            // create/add supermarkets and save
            foreach (var supermarket in supermarketEntities)
            {
                _supermarketRepository.AddSupermarket(supermarket);
            }

            if (!_supermarketRepository.Save())
            {
                throw new Exception("Creating a supermarket collection failed on save.");
            }

            // map new supermarkets
            var supermarketCollectionToReturn = Mapper.Map <IEnumerable <SupermarketDTO> >(supermarketEntities);
            // get ids of new supermarkets to return
            var idsAsString = string.Join(",", supermarketCollectionToReturn.Select(s => s.SupermarketId));

            // return all created supermarkets
            return(CreatedAtRoute("GetSupermarketCollection",
                                  new { ids = idsAsString },
                                  supermarketCollectionToReturn));
        }
Exemplo n.º 7
0
        public IActionResult CreateProductCollection([FromBody] IEnumerable <ProductForCreationDTO> productCollection)
        {
            if (productCollection == null)
            {
                return(BadRequest());
            }

            // Validate data
            foreach (ProductForCreationDTO p in productCollection)
            {
                if (!ModelState.IsValid)
                {
                    // return 422
                    return(new UnprocessableEntityObjectResult(ModelState));
                }
            }

            var productEntities = Mapper.Map <IEnumerable <Product> >(productCollection);

            foreach (var product in productEntities)
            {
                _supermarketRepository.AddProduct(product);
            }

            if (!_supermarketRepository.Save())
            {
                throw new Exception("Creating a product collection failed on save.");
            }

            var productCollectionToReturn = Mapper.Map <IEnumerable <ProductDTO> >(productEntities);
            var idsAsString = string.Join(",", productCollectionToReturn.Select(p => p.ProductId));

            return(CreatedAtRoute("GetProductCollection",
                                  new { ids = idsAsString },
                                  productCollectionToReturn));
        }
        public IActionResult CreateStaffMemberCollection([FromBody] IEnumerable <StaffMemberForCreationDTO> staffMemberCollection)
        {
            if (staffMemberCollection == null)
            {
                return(BadRequest());
            }

            // Validate data
            foreach (StaffMemberForCreationDTO s in staffMemberCollection)
            {
                if (!ModelState.IsValid || !_supermarketRepository.SupermarketExists(s.SupermarketId))
                {
                    // return 422
                    return(new UnprocessableEntityObjectResult(ModelState));
                }
            }

            var staffMemberEntities = Mapper.Map <IEnumerable <StaffMember> >(staffMemberCollection);

            foreach (var staffMember in staffMemberEntities)
            {
                _supermarketRepository.AddStaffMember(staffMember);
            }

            if (!_supermarketRepository.Save())
            {
                throw new Exception("Creating a staff member collection failed on save.");
            }

            var staffMemberCollectionToReturn = Mapper.Map <IEnumerable <StaffMemberDTO> >(staffMemberEntities);
            var idsAsString = string.Join(",", staffMemberCollectionToReturn.Select(s => s.Id));

            return(CreatedAtRoute("GetStaffMemberCollection",
                                  new { ids = idsAsString },
                                  staffMemberCollectionToReturn));
        }
        public IActionResult CreateSupermarket([FromBody] SupermarketForCreationDTO supermarket)
        {
            // check supermarket exists
            if (supermarket == null)
            {
                return(BadRequest());
            }

            // Validate data
            if (!ModelState.IsValid)
            {
                // return 422
                return(new UnprocessableEntityObjectResult(ModelState));
            }

            // map data
            var supermarketEntity = Mapper.Map <Supermarket>(supermarket);

            // add supermarket and save
            _supermarketRepository.AddSupermarket(supermarketEntity);

            if (!_supermarketRepository.Save())
            {
                throw new Exception("Creating a supermarket failed on Save.");
            }

            // map and return new supermarket
            var supermarketToReturn = Mapper.Map <SupermarketDTO>(supermarketEntity);

            var links = CreateLinksForSupermarket(supermarketToReturn.SupermarketId, null);

            var linkedResourceToReturn = supermarketToReturn.ShapeData(null)
                                         as IDictionary <string, object>;

            linkedResourceToReturn.Add("links", links);

            return(CreatedAtRoute("GetSupermarket", new { SupermarketId = linkedResourceToReturn["SupermarketId"] }, linkedResourceToReturn));
        }