/// <summary>
 /// Constructor that requires the interface for the database and log
 /// </summary>
 /// <param name="db"></param>
 /// <param name="log"></param>
 public VendingMachine(IVendingService db, ILogService log)
 {
     _db       = db;
     _log      = log;
     _transMgr = new TransactionManager(_db, _log);
     _roleMgr  = new RoleManager(null);
 }
        /// <summary>
        /// Creates a transaction item for each product and associates that with a vending transaction
        /// </summary>
        /// <param name="db">Database interface used to create the data</param>
        public static void PopulateDatabaseWithTransactions(IVendingService db)
        {
            using (TransactionScope scope = new TransactionScope())
            {
                // Get a list of products and users
                List <ProductItem> products = db.GetProductItems();
                List <UserItem>    users    = db.GetUserItems();

                VendingTransaction vendTrans = new VendingTransaction()
                {
                    Date   = DateTime.UtcNow,
                    UserId = users[0].Id
                };
                vendTrans.Id = db.AddVendingTransaction(vendTrans);

                foreach (ProductItem prodItem in products)
                {
                    // Add Transaction Item
                    TransactionItem item = new TransactionItem()
                    {
                        SalePrice            = prodItem.Price,
                        VendingTransactionId = vendTrans.Id,
                        ProductId            = prodItem.Id
                    };
                    item.Id = db.AddTransactionItem(item);
                }

                scope.Complete();
            }
        }
Esempio n. 3
0
        public HomeController(IVendingService db, ILogService log)
        {
            _db  = db;
            _log = log;

            //ReportManager reportMgr = new ReportManager(db);
            //Report report = reportMgr.GetReport(2018, _db.GetProductItems());
            //var items = report.ReportItems;
        }
Esempio n. 4
0
        public MainWindowViewModel()
        {
            PurchaseOutput = "...";

            service      = new VendingService();
            acceptedCash = service.GetAcceptedDenominations();

            PurchaseCommand = new MyCommand(Purchase);
            InitCollections();
        }
        public BaseController(IVendingService db, IVendingMachine vm, IHttpContextAccessor httpContext) : base(httpContext)
        {
            var user = GetSessionData <UserItem>(UserKey);

            vm.SetUser(user);
            _roleMgr = new RoleManager(user);

            _vm = vm;
            _db = db;
        }
        public AuthController(IVendingService db, IHttpContextAccessor httpContext) : base(httpContext)
        {
            _db = db;

            // Get the role manager from the session
            _roleMgr = GetSessionData <RoleManager>(RoleMgrKey);

            // If it does not exist on the session then add it
            if (_roleMgr == null)
            {
                // Since the role manager is being created then a user still needs to be authenticated
                _roleMgr = new RoleManager(null);

                SetSessionData(RoleMgrKey, _roleMgr);
            }
        }
Esempio n. 7
0
        public static Change PopulateLogFileWithOperations(IVendingService db, ILogService log)
        {
            TransactionManager trans = new TransactionManager(db, log);

            trans.AddFeedMoneyOperation(15.0);
            trans.AddFeedMoneyOperation(10.0);

            var products = db.GetProductItems();

            foreach (var product in products)
            {
                trans.AddPurchaseTransaction(product.Id);
            }

            return(trans.AddGiveChangeOperation());
        }
Esempio n. 8
0
 public ReportingService(IProductRepository productRepository, IVendingService vendingService)
 {
     this.vendingService    = vendingService;
     this.productRepository = productRepository;
 }
Esempio n. 9
0
        public static void PopulateDatabaseWithInventory(IVendingService db)
        {
            using (TransactionScope scope = new TransactionScope())
            {
                CategoryItem categoryItem = new CategoryItem()
                {
                    Name  = "Chips",
                    Noise = "Crunch, Crunch, Crunch, Yum!"
                };
                categoryItem.Id = db.AddCategoryItem(categoryItem);

                // Add Product 1
                ProductItem productItem = new ProductItem()
                {
                    Name       = "Lays Regular",
                    Price      = 0.50,
                    CategoryId = categoryItem.Id
                };
                productItem.Id = db.AddProductItem(productItem);

                InventoryItem inventoryItem = new InventoryItem()
                {
                    Column    = 1,
                    Row       = 1,
                    Qty       = 5,
                    ProductId = productItem.Id
                };
                inventoryItem.Id = db.AddInventoryItem(inventoryItem);

                // Add Product 2
                productItem.Name  = "Pringles Barbeque";
                productItem.Price = 0.65;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 2;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 3
                productItem.Name  = "Ruffles Sour Cream and Chives";
                productItem.Price = 0.75;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 3;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 4
                categoryItem.Name  = "Candy";
                categoryItem.Noise = "Lick, Lick, Yum!";
                categoryItem.Id    = db.AddCategoryItem(categoryItem);

                productItem.Name       = "M&Ms Plain";
                productItem.Price      = 0.55;
                productItem.CategoryId = categoryItem.Id;
                productItem.Id         = db.AddProductItem(productItem);

                inventoryItem.Row       = 2;
                inventoryItem.Column    = 1;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 5
                productItem.Name  = "M&Ms Peanut";
                productItem.Price = 0.55;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 2;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 6
                productItem.Name  = "Gummy Bears";
                productItem.Price = 1.00;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 3;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 7
                categoryItem.Name  = "Nuts";
                categoryItem.Noise = "Munch, Munch, Yum!";
                categoryItem.Id    = db.AddCategoryItem(categoryItem);

                productItem.Name       = "Peanuts";
                productItem.Price      = 1.00;
                productItem.CategoryId = categoryItem.Id;
                productItem.Id         = db.AddProductItem(productItem);

                inventoryItem.Row       = 3;
                inventoryItem.Column    = 1;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 8
                productItem.Name  = "Cashews";
                productItem.Price = 1.50;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 2;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 9
                productItem.Name  = "Sunflower Seeds";
                productItem.Price = 1.25;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 3;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 10
                categoryItem.Name  = "Gum";
                categoryItem.Noise = "Chew, Chew, Yum!";
                categoryItem.Id    = db.AddCategoryItem(categoryItem);

                productItem.Name       = "Hubba Bubba";
                productItem.Price      = 0.75;
                productItem.CategoryId = categoryItem.Id;
                productItem.Id         = db.AddProductItem(productItem);

                inventoryItem.Row       = 4;
                inventoryItem.Column    = 1;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 11
                productItem.Name  = "Bubble Yum";
                productItem.Price = 0.75;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 2;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 12
                productItem.Name  = "Trident";
                productItem.Price = 0.65;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 3;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);
                scope.Complete();
            }
        }
Esempio n. 10
0
 public TransactionManager(IVendingService db, ILogService log)
 {
     _db  = db;
     _log = log;
 }
Esempio n. 11
0
 public UserController(IVendingService db, IHttpContextAccessor httpContext) : base(db, httpContext)
 {
 }
        /// <summary>
        /// Creates the products, inventory, and categories to support a 4x3 vending machine
        /// </summary>
        /// <param name="db">Database interface used to create the data</param>
        public static void PopulateDatabaseWithInventory(IVendingService db)
        {
            using (TransactionScope scope = new TransactionScope())
            {
                CategoryItem categoryItem = new CategoryItem()
                {
                    Name  = "Chips",
                    Noise = "Crunch, Crunch, Crunch, Yum!"
                };
                categoryItem.Id = db.AddCategoryItem(categoryItem);

                // Add Product 1
                ProductItem productItem = new ProductItem()
                {
                    Name       = "Lays",
                    Price      = 0.50,
                    Image      = "https://image.flaticon.com/icons/svg/305/305385.svg",
                    CategoryId = categoryItem.Id
                };
                productItem.Id = db.AddProductItem(productItem);

                InventoryItem inventoryItem = new InventoryItem()
                {
                    Column    = 1,
                    Row       = 1,
                    Qty       = 5,
                    ProductId = productItem.Id
                };
                inventoryItem.Id = db.AddInventoryItem(inventoryItem);

                // Add Product 2
                productItem.Name  = "Pringles";
                productItem.Image = "https://image.flaticon.com/icons/svg/1228/1228383.svg";
                productItem.Price = 0.65;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 2;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 3
                productItem.Name  = "Ruffles";
                productItem.Image = "https://image.flaticon.com/icons/svg/1046/1046758.svg";
                productItem.Price = 0.75;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 3;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 4
                categoryItem.Name  = "Candy";
                categoryItem.Noise = "Lick, Lick, Yum!";
                categoryItem.Id    = db.AddCategoryItem(categoryItem);

                productItem.Name       = "M&Ms Plain";
                productItem.Image      = "https://image.flaticon.com/icons/svg/1296/1296913.svg";
                productItem.Price      = 0.55;
                productItem.CategoryId = categoryItem.Id;
                productItem.Id         = db.AddProductItem(productItem);

                inventoryItem.Row       = 2;
                inventoryItem.Column    = 1;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 5
                productItem.Name  = "M&Ms Peanut";
                productItem.Image = "https://image.flaticon.com/icons/svg/1296/1296944.svg";
                productItem.Price = 0.55;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 2;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 6
                productItem.Name  = "Gummy Bears";
                productItem.Image = "https://image.flaticon.com/icons/svg/119/119497.svg";
                productItem.Price = 1.00;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 3;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 7
                categoryItem.Name  = "Nuts";
                categoryItem.Noise = "Munch, Munch, Yum!";
                categoryItem.Id    = db.AddCategoryItem(categoryItem);

                productItem.Name       = "Peanuts";
                productItem.Image      = "https://image.flaticon.com/icons/svg/811/811455.svg";
                productItem.Price      = 1.00;
                productItem.CategoryId = categoryItem.Id;
                productItem.Id         = db.AddProductItem(productItem);

                inventoryItem.Row       = 3;
                inventoryItem.Column    = 1;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 8
                productItem.Name  = "Cashews";
                productItem.Image = "https://image.flaticon.com/icons/svg/1256/1256949.svg";
                productItem.Price = 1.50;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 2;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 9
                productItem.Name  = "Sunflower Seeds";
                productItem.Image = "https://image.flaticon.com/icons/svg/188/188352.svg";
                productItem.Price = 1.25;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 3;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 10
                categoryItem.Name  = "Gum";
                categoryItem.Noise = "Chew, Chew, Yum!";
                categoryItem.Id    = db.AddCategoryItem(categoryItem);

                productItem.Name       = "Hubba Bubba";
                productItem.Image      = "https://image.flaticon.com/icons/svg/287/287062.svg";
                productItem.Price      = 0.75;
                productItem.CategoryId = categoryItem.Id;
                productItem.Id         = db.AddProductItem(productItem);

                inventoryItem.Row       = 4;
                inventoryItem.Column    = 1;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 11
                productItem.Name  = "Bubble Yum";
                productItem.Image = "https://image.flaticon.com/icons/svg/1331/1331714.svg";
                productItem.Price = 0.75;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 2;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);

                // Add Product 12
                productItem.Name  = "Trident";
                productItem.Image = "https://image.flaticon.com/icons/svg/524/524402.svg";
                productItem.Price = 0.65;
                productItem.Id    = db.AddProductItem(productItem);

                inventoryItem.Column    = 3;
                inventoryItem.ProductId = productItem.Id;
                inventoryItem.Id        = db.AddInventoryItem(inventoryItem);
                scope.Complete();
            }
        }
Esempio n. 13
0
 public VendingItemController(IVendingService db)
 {
     _db = db;
 }
 public VendingTransactionController(IVendingService db)
 {
     _db = db;
 }
Esempio n. 15
0
 public UserManager(IVendingService db)
 {
     _db = db;
 }
Esempio n. 16
0
 public VendingApiController(IVendingService db, IVendingMachine vm, IHttpContextAccessor httpContext) : base(db, vm, httpContext)
 {
 }
Esempio n. 17
0
 public LogController(ILogService loggingDAO, IVendingService db, IHttpContextAccessor httpContext) : base(db, httpContext)
 {
     _loggingDAO = loggingDAO;
 }
 public CategoryController(IVendingService db)
 {
     _db = db;
 }
Esempio n. 19
0
 public RoleController(IVendingService db)
 {
     _db = db;
 }
Esempio n. 20
0
 public PaymentController(IVendingService vendingService, ICashRegister cashRegister, IMapper mapper)
 {
     _vendingService = vendingService;
     _cashRegister   = cashRegister;
     _mapper         = mapper;
 }
Esempio n. 21
0
 public ReportManager(IVendingService db)
 {
     _db = db;
 }
 public VendingController(IVendingService dal)
 {
     this.dal = dal;
 }
Esempio n. 23
0
 public InventoryController(IVendingService db)
 {
     _db = db;
 }
Esempio n. 24
0
 public VendingBaseController(IVendingService db, ILogService log)
 {
     _db  = db;
     _log = log;
 }
        /// <summary>
        /// Creates a user for each role type
        /// </summary>
        /// <param name="db">Database interface used to create the data</param>
        public static void PopulateDatabaseWithUsers(IVendingService db)
        {
            using (TransactionScope scope = new TransactionScope())
            {
                PasswordManager passHelper = new PasswordManager("a");

                db.AddRoleItem(new RoleItem()
                {
                    Id = 1, Name = "Administrator"
                });
                db.AddRoleItem(new RoleItem()
                {
                    Id = 2, Name = "Customer"
                });
                db.AddRoleItem(new RoleItem()
                {
                    Id = 3, Name = "Executive"
                });
                db.AddRoleItem(new RoleItem()
                {
                    Id = 4, Name = "Serviceman"
                });

                UserItem item = new UserItem()
                {
                    FirstName = "Joe",
                    LastName  = "Piscapoe",
                    Username  = "******",
                    Email     = "*****@*****.**",
                    RoleId    = (int)RoleManager.eRole.Administrator
                };
                item.Hash = passHelper.Hash;
                item.Salt = passHelper.Salt;
                item.Id   = db.AddUserItem(item);

                item = new UserItem()
                {
                    FirstName = "John",
                    LastName  = "Doe",
                    Username  = "******",
                    Email     = "*****@*****.**",
                    RoleId    = (int)RoleManager.eRole.Customer
                };
                item.Hash = passHelper.Hash;
                item.Salt = passHelper.Salt;
                item.Id   = db.AddUserItem(item);

                item = new UserItem()
                {
                    FirstName = "Sally",
                    LastName  = "Mae",
                    Username  = "******",
                    Email     = "*****@*****.**",
                    RoleId    = (int)RoleManager.eRole.Executive
                };
                item.Hash = passHelper.Hash;
                item.Salt = passHelper.Salt;
                item.Id   = db.AddUserItem(item);

                item = new UserItem()
                {
                    FirstName = "Alex",
                    LastName  = "Carol",
                    Username  = "******",
                    Email     = "*****@*****.**",
                    RoleId    = (int)RoleManager.eRole.Serviceman
                };
                item.Hash = passHelper.Hash;
                item.Salt = passHelper.Salt;
                item.Id   = db.AddUserItem(item);

                scope.Complete();
            }
        }
 public TransactionItemController(IVendingService db, IHttpContextAccessor httpContext) : base(db, httpContext)
 {
     
 }
        /// <summary>
        /// Creates each type of vending operation and a purchase operation for each product in the system
        /// </summary>
        /// <param name="db">Database interface used to create the data</param>
        /// <param name="log">Log interface used to create the file data</param>
        public static void PopulateLogFileWithOperations(IVendingService db, ILogService log)
        {
            OperationTypeItem type = new OperationTypeItem();

            type.Id   = (int)VendingOperation.eOperationType.Invalid;
            type.Name = VendingOperation.eOperationType.Invalid.ToString();
            log.AddOperationTypeItem(type);

            type.Id   = (int)VendingOperation.eOperationType.FeedMoney;
            type.Name = VendingOperation.eOperationType.FeedMoney.ToString();
            log.AddOperationTypeItem(type);

            type.Id   = (int)VendingOperation.eOperationType.GiveChange;
            type.Name = VendingOperation.eOperationType.GiveChange.ToString();
            log.AddOperationTypeItem(type);

            type.Id   = (int)VendingOperation.eOperationType.PurchaseItem;
            type.Name = VendingOperation.eOperationType.PurchaseItem.ToString();
            log.AddOperationTypeItem(type);

            var users    = db.GetUserItems();
            var products = db.GetProductItems();

            double runningTotal = 0.0;

            foreach (var user in users)
            {
                VendingOperation op = new VendingOperation();
                op.OperationType = VendingOperation.eOperationType.FeedMoney;
                op.Price         = 20.0;
                op.RunningTotal  = runningTotal += op.Price;
                op.TimeStamp     = DateTime.UtcNow;
                op.UserId        = user.Id;
                log.LogOperation(op);

                op.OperationType = VendingOperation.eOperationType.FeedMoney;
                op.Price         = 10.0;
                op.RunningTotal  = runningTotal += op.Price;
                op.TimeStamp     = DateTime.UtcNow;
                op.UserId        = user.Id;
                log.LogOperation(op);

                foreach (var product in products)
                {
                    op = new VendingOperation();
                    op.OperationType = VendingOperation.eOperationType.PurchaseItem;
                    op.Price         = product.Price;
                    op.RunningTotal  = runningTotal - op.Price;
                    op.TimeStamp     = DateTime.UtcNow;
                    op.UserId        = user.Id;
                    op.ProductId     = product.Id;
                    log.LogOperation(op);
                }

                op.OperationType = VendingOperation.eOperationType.GiveChange;
                op.Price         = runningTotal;
                runningTotal     = 0.0;
                op.RunningTotal  = runningTotal;
                op.TimeStamp     = DateTime.UtcNow;
                op.UserId        = user.Id;
                op.ProductId     = BaseItem.InvalidId;
                log.LogOperation(op);
            }
        }
        public void Initialize()
        {
            _db = new VendingDBService(_connectionString);
            //_db = new MockVendingDBService();

            // Initialize a new transaction scope. This automatically begins the transaction.
            _tran = new TransactionScope();

            PasswordManager passHelper = new PasswordManager("Abcd!234");

            if (_userId1 == BaseItem.InvalidId)
            {
                var temp = new UserItem()
                {
                    Id = BaseItem.InvalidId
                };
                temp.FirstName = "Amy";
                temp.LastName  = "Rupp";
                temp.Username  = "******";
                temp.Hash      = passHelper.Hash;
                temp.Salt      = passHelper.Salt;
                temp.Email     = "*****@*****.**";
                temp.RoleId    = (int)RoleManager.eRole.Customer;

                // Add user item
                _userId1 = _db.AddUserItem(temp);
                Assert.AreNotEqual(0, _userId1);
            }

            if (_userId2 == BaseItem.InvalidId)
            {
                var temp = new UserItem()
                {
                    Id = BaseItem.InvalidId
                };
                temp.FirstName = "Chloe";
                temp.LastName  = "Rupp";
                temp.Username  = "******";
                temp.Hash      = passHelper.Hash;
                temp.Salt      = passHelper.Salt;
                temp.Email     = "*****@*****.**";
                temp.RoleId    = (int)RoleManager.eRole.Customer;

                // Add user item
                _userId2 = _db.AddUserItem(temp);
                Assert.AreNotEqual(0, _userId2);
            }

            if (_categoryId == BaseItem.InvalidId)
            {
                var temp = new CategoryItem()
                {
                    Id = BaseItem.InvalidId
                };
                temp.Name  = "TestCategory";
                temp.Noise = "CategoryNoise";

                // Add category item
                _categoryId = _db.AddCategoryItem(temp);
                Assert.AreNotEqual(0, _categoryId);
            }

            if (_productId == BaseItem.InvalidId)
            {
                // Add product item
                _productId = _db.AddProductItem(
                    new ProductItem()
                {
                    Name       = "TestProduct",
                    Price      = 0.50,
                    CategoryId = _categoryId,
                    Image      = "http://localhost:8080/api/food/peanuts.jpg"
                });
                Assert.AreNotEqual(0, _productId);
            }

            if (_inventoryId == BaseItem.InvalidId)
            {
                // Add inventory item
                _inventoryId = _db.AddInventoryItem(
                    new InventoryItem()
                {
                    Row       = 1,
                    Column    = 1,
                    Qty       = 4,
                    ProductId = _productId
                });
                Assert.AreNotEqual(0, _inventoryId);
            }

            if (_vendingTransactionId == BaseItem.InvalidId)
            {
                // Add vending transaction
                _vendingTransactionId = _db.AddVendingTransaction(
                    new VendingTransaction()
                {
                    Date   = DateTime.UtcNow,
                    UserId = _userId1
                });
                Assert.AreNotEqual(0, _vendingTransactionId);
            }
        }
 public VendingApiController(IVendingService db, ILogService log) : base(db, log)
 {
 }
Esempio n. 30
0
 public ProductController(IVendingService vendingService, IMapper mapper)
 {
     _vendingService = vendingService;
     _mapper         = mapper;
 }