public virtual int AddNewItem(T genericItem)
        {
            var itemInput    = new GetItemByIdInput();
            var barcodeInput = new SetItemBarcodeInput();
            var updateInput  = new UpdateItemInput();

            var input = new AddNewItemInput <T>
            {
                Item = new GenericItemDto <T>(genericItem)
            };

            using (var repo = new GenericItemRepositoryBase <T>())
            {
                var app = new GenericItemAppService <T>(repo);
                itemInput.Id = app.AddNewItem(input).Id;
            }
            using (var itemRepo = new ItemRepository())
            {
                var app      = new ItemAppService(itemRepo);
                var thisItem = app.GetItemById(itemInput);
                barcodeInput.Item = thisItem.Item;
                var barcodeOutput = app.SetItemBarcode(barcodeInput);
                thisItem.Item.Barcode = barcodeOutput.Barcode;
                updateInput.Item      = thisItem.Item;
                app.UpdateItem(updateInput);
            }
            return(itemInput.Id);
        }
 public virtual IEnumerable <T> GetAllItems()
 {
     using (var repo = new GenericItemRepositoryBase <T>())
     {
         var app    = new GenericItemAppService <T>(repo);
         var output = app.GetAllTItems();
         return(output.Items.Select(i => i.ConvertToTItem()).ToList());
     }
 }
        public virtual int UpdateItem(T updatedGenericItem)
        {
            var input = new UpdateTItemInput <T>
            {
                Item = new GenericItemDto <T>(updatedGenericItem)
            };

            using (var repo = new GenericItemRepositoryBase <T>())
            {
                var app = new GenericItemAppService <T>(repo);
                return(app.UpdateTItem(input).Id);
            }
        }
        public virtual T GetItemByTitle(string title)
        {
            var input = new GetItemByTitleInput
            {
                Title = title
            };

            using (var repo = new GenericItemRepositoryBase <T>())
            {
                var app    = new GenericItemAppService <T>(repo);
                var output = app.GetItemByTitle(input);
                return(output.Item.ConvertToTItem());
            }
        }