/// <summary>
        /// New table definition.
        /// </summary>
        /// <example>
        ///     Database.AddTable("Users", t => {
        ///         t.PrimaryKey();                 // Adds long field named Id and makes it identity primary key.
        ///         t.String("Login");              // Adds String field named Login.
        ///         t.String("Password");           // Adds String field named Password.
        ///         t.String("FullName").Null();    // Adds nullable String field named FullName.
        ///     });
        /// </example>
        /// <param name="transformationProvider">The transformation provider.</param>
        /// <param name="tableName">Name of the table.</param>
        /// <param name="tableDefinition">The table definition expressions.</param>
        public static void AddTable(this ITransformationProvider transformationProvider, String tableName, Action <Table> tableDefinition)
        {
            var table = new AddTable(tableName);

            tableDefinition(table);
            table.Migrate(transformationProvider);
        }
예제 #2
0
        private async Task <TestHubConnection> BuildTestHubConnectionWithoutAssignedWaiter <TEvent>(
            HireWaiter hireAssignedWaiterCommand,
            HireWaiter hireUnassignedWaiterCommand,
            AddTable addTableCommand,
            Register registerCommand)
        {
            await HireWaiterWithTable(hireAssignedWaiterCommand, addTableCommand);

            await _fixture.SendAsync(hireUnassignedWaiterCommand);

            await _fixture.SendAsync(registerCommand);

            var assignWaiterToAccountCommand = new AssignWaiterToAccount
            {
                AccountId = registerCommand.Id,

                // Purposefully assigning another waiter to the account, that is not assigned to the table
                WaiterId = hireUnassignedWaiterCommand.Id
            };

            await _fixture.SendAsync(assignWaiterToAccountCommand);

            var accessToken = (await _authHelper
                               .Login(registerCommand.Email, registerCommand.Password))
                              .TokenString;

            var testConnection = BuildTestConnection <TEvent>(accessToken);

            return(testConnection);
        }
예제 #3
0
        public async Task UnassignedToWaitersAccountsShouldNotReceiveBillRequestedMessage(
            HireWaiter hireAssignedWaiterCommand,
            HireWaiter hireUnassignedWaiterCommand,
            AddTable addTableCommand,
            Register registerCommand)
        {
            // Arrange
            var testConnection = await BuildTestHubConnectionWithoutAssignedWaiter <BillRequested>(
                hireAssignedWaiterCommand,
                hireUnassignedWaiterCommand,
                addTableCommand,
                registerCommand);

            await testConnection.OpenAsync();

            var requestBillCommand = new RequestBill
            {
                TableNumber = addTableCommand.Number
            };

            // Act
            await _fixture.SendAsync(requestBillCommand);

            // Assert
            await testConnection.VerifyNoMessagesWereReceived();
        }
예제 #4
0
        public async Task CanAssignTable(HireWaiter hireWaiterCommand, AddTable addTableCommand)
        {
            // Arrange
            await _fixture.SendAsync(addTableCommand);

            await _fixture.SendAsync(hireWaiterCommand);

            var assignTableCommand = new AssignTable
            {
                WaiterId    = hireWaiterCommand.Id,
                TableNumber = addTableCommand.Number
            };

            // Act
            var result = await _fixture.SendAsync(assignTableCommand);

            // Assert
            var tableInDb = await _fixture.ExecuteDbContextAsync(dbContext =>
                                                                 dbContext
                                                                 .Tables
                                                                 .Include(t => t.Waiter)
                                                                 .ThenInclude(w => w.ServedTables)
                                                                 .FirstOrDefaultAsync(t => t.Id == addTableCommand.Id));

            tableInDb.ShouldNotBeNull();
            tableInDb.WaiterId.ShouldBe(hireWaiterCommand.Id);
            tableInDb.Waiter.ShouldNotBeNull();
            tableInDb.Waiter.ShortName.ShouldBe(hireWaiterCommand.ShortName);
            tableInDb.Waiter.ServedTables.ShouldContain(t => t.Id == addTableCommand.Id &&
                                                        t.Number == assignTableCommand.TableNumber);
        }
예제 #5
0
        private void butAdd_Click(object sender, EventArgs e)
        {
            AddTable ins = new AddTable();

            this.Hide();
            ins.ShowDialog();
            this.Show();
        }
예제 #6
0
        private void btnNew_Click(object sender, EventArgs e)
        {
            AddTable tbl = new AddTable();

            if (tbl.ShowDialog() == DialogResult.OK)
            {
                LoadGrid();
            }
        }
예제 #7
0
    static void Main(string[] args)
    {
      //create a dictionary
      Dictionary<Database, List<DatabaseTable>> dictionary = new Dictionary<Database, List<DatabaseTable>>();
      List<DatabaseTable> list = new List<DatabaseTable>();

      //create a list<string> for column_names to be stored
      List<string> column_names=new List<string>();

      //Populate the list of column names
      column_names.Add("StatusID");
      column_names.Add("Status_title");
      column_names.Add("Status_description");

      //create and initialize databasetable object "table1"
      DatabaseTable table1 = new DatabaseTable("Status", "StatusID",column_names);

      //create a new database object
      Database database1 = new Database("Database");

      //populate the database object with databasetable object
      database1.PopulateTable(table1);

      DatabaseTable table2 = new DatabaseTable("Client", "ClientID", column_names);
      database1.PopulateTable(table2);

      //Add the two tables into the list
      list.Add(table1);
      list.Add(table2);
    
      //populate the dictionary with the Database name and with corresponding List<table> objects in it
      dictionary.Add(database1, list);
     


      //Rename a particular table in a database with a new name
       DatabaseTable d=database1.RenameTable("Status", "NewStatus", list);
       list.Remove(table1);
       list.Add(d);

       IBinaryFile bf = new BinaryFile();
       long getRowSize = bf.GetRowSize();
       long size = bf.GetPrimaryKeySize();
       DataTypes pkey = bf.GetPrimaryKeyType();

        AddTable add = new AddTable();
      //create a new binary file 
      add.CreateTable("Status");
      //add a node into the binary file with the Table name
      add.CreateNode("Status", 10, 19, 4, 25, 35);

      TestWriter tw = new TestWriter();
      tw.bWriter();
      tw.search("C:\\Users\\TestBinary.dat");
       
    }
예제 #8
0
        public async Task CanAddTable(AddTable command)
        {
            // Arrange
            // Act
            var result = await _fixture.SendAsync(command);

            // Assert
            var tableInDb = await _fixture.ExecuteDbContextAsync(dbContext =>
                                                                 dbContext.Tables.FirstOrDefaultAsync(t => t.Id == command.Id));

            tableInDb.ShouldNotBeNull();
            tableInDb.Number.ShouldBe(command.Number);
        }
예제 #9
0
        private async Task HireWaiterWithTable(HireWaiter hireWaiterCommand, AddTable addTableCommand)
        {
            await _fixture.SendAsync(addTableCommand);

            await _fixture.SendAsync(hireWaiterCommand);

            var assignTableCommand = new AssignTable
            {
                WaiterId    = hireWaiterCommand.Id,
                TableNumber = addTableCommand.Number
            };

            await _fixture.SendAsync(assignTableCommand);
        }
예제 #10
0
        public async Task SetupWaiterWithTable(HireWaiter hireWaiterCommand, AddTable addTableCommand)
        {
            await _fixture.SendAsync(addTableCommand);

            await _fixture.SendAsync(hireWaiterCommand);

            var assignTableCommand = new AssignTable
            {
                TableNumber = addTableCommand.Number,
                WaiterId    = hireWaiterCommand.Id
            };

            await _fixture.SendAsync(assignTableCommand);
        }
예제 #11
0
        public async Task CannotAssignUnexistingWaiter(AddTable addTableCommand)
        {
            // Arrange
            await _fixture.SendAsync(addTableCommand);

            var assignTableCommand = new AssignTable
            {
                WaiterId    = Guid.NewGuid(), // Irrelevant since we haven't hired any waiters
                TableNumber = addTableCommand.Number
            };

            // Act
            var result = await _fixture.SendAsync(assignTableCommand);

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.NotFound);
        }
예제 #12
0
        public async Task CannotAddTableWithATakenNumber(AddTable addFirstTableCommand)
        {
            // Arrange
            await _fixture.SendAsync(addFirstTableCommand);

            var addTableWithTheSameNumberCommand = new AddTable
            {
                Id     = Guid.NewGuid(),
                Number = addFirstTableCommand.Number
            };

            // Act
            var result = await _fixture.SendAsync(addTableWithTheSameNumberCommand);

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.Conflict);
        }
예제 #13
0
        public Task AddTableShouldReturnProperHypermediaLinks(AddTable command, Fixture fixture) =>
        _apiHelper.InTheContextOfAManager(
            manager => async httpClient =>
        {
            // Act
            var response = await httpClient
                           .PostAsJsonAsync(TableRoute(), command);

            // Assert
            var expectedLinks = new List <string>
            {
                LinkNames.Self,
                LinkNames.Table.GetAll
            };

            await response.ShouldBeAResource <AddTableResource>(expectedLinks);
        },
            fixture);
예제 #14
0
        public async Task CannotOrderItemsOnAnUnexistingTab(
            MenuItem[] itemsToOrder,
            HireWaiter hireWaiterCommand,
            AddTable addTableCommand)
        {
            // Arrange
            await _helper.SetupWaiterWithTable(hireWaiterCommand, addTableCommand);

            // Purposefully not opening a tab
            var orderItemsCommand = new OrderMenuItems
            {
                TabId       = Guid.NewGuid(),
                ItemNumbers = itemsToOrder.Select(i => i.Number).ToList()
            };

            // Act
            var result = await _fixture.SendAsync(orderItemsCommand);

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.NotFound);
        }
예제 #15
0
        public async Task BillRequestedMessageShouldBeCorrectlySentWhenMultipleSubscribersAreAttached(
            HireWaiter hireAssignedWaiterCommand,
            HireWaiter hireUnassignedWaiterCommand,
            AddTable addTableCommand,
            Register registerAssignedAccount,
            Register registerUnassignedAccount)
        {
            // Arrange
            var invalidTestConnection = await BuildTestHubConnectionWithoutAssignedWaiter <BillRequested>(
                hireAssignedWaiterCommand,
                hireUnassignedWaiterCommand,
                addTableCommand,
                registerUnassignedAccount);

            var validTestConnection = await BuildTestTableActionConnection <BillRequested>(
                hireAssignedWaiterCommand,
                addTableCommand,
                registerAssignedAccount);

            await invalidTestConnection.OpenAsync();

            await validTestConnection.OpenAsync();

            var requestBillCommand = new RequestBill
            {
                TableNumber = addTableCommand.Number
            };

            // Act
            await _fixture.SendAsync(requestBillCommand);

            // Assert
            await invalidTestConnection.VerifyNoMessagesWereReceived();

            await validTestConnection.VerifyMessageReceived <BillRequested>(
                e => e.TableNumber == addTableCommand.Number &&
                e.WaiterId == hireAssignedWaiterCommand.Id,
                Times.Once());
        }
예제 #16
0
        public Task RequestBillShouldReturnProperHypermediaLinks(HireWaiter hireWaiter, AddTable addTable, Fixture fixture) =>
        _apiHelper.InTheContextOfAnAuthenticatedUser(
            async httpClient =>
        {
            // Arrange
            await _tabHelper.SetupWaiterWithTable(hireWaiter, addTable);

            var requestBill = new RequestBill
            {
                TableNumber = addTable.Number
            };

            // Act
            var response = await httpClient
                           .PostAsJsonAsync(TableRoute($"{addTable.Number}/requestBill"), requestBill);

            // Assert
            var expectedLinks = new List <string>
            {
                LinkNames.Self,
                LinkNames.Table.CallWaiter,
                LinkNames.Table.GetAll
            };

            await response.ShouldBeAResource <RequestBillResource>(expectedLinks);
        },
            fixture);
예제 #17
0
        public async Task CannotAssignTheSameWaiterTwice(HireWaiter hireWaiterCommand, AddTable addTableCommand)
        {
            // Arrange
            await _fixture.SendAsync(addTableCommand);

            await _fixture.SendAsync(hireWaiterCommand);

            var assignTableCommand = new AssignTable
            {
                WaiterId    = hireWaiterCommand.Id,
                TableNumber = addTableCommand.Number
            };

            await _fixture.SendAsync(assignTableCommand);

            // Act
            var result = await _fixture.SendAsync(assignTableCommand);

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.Conflict);
        }
 /// <summary>
 /// Event invoker
 /// </summary>
 protected virtual void OnAddTable(TableModel e)
 {
     AddTable?.Invoke(this, e);
 }
예제 #19
0
        private void btnNew_Click_1(object sender, EventArgs e)
        {
            AddTable frm = new AddTable();

            frm.Show();
        }
예제 #20
0
        public Task AssignTableShouldReturnProperHypermediaLinks(HireWaiter hireWaiterCommand, AddTable addTableCommand, Fixture fixture) =>
        _apiHelper.InTheContextOfAManager(
            manager => async httpClient =>
        {
            // Arrange
            await _fixture.SendAsync(hireWaiterCommand);
            await _fixture.SendAsync(addTableCommand);

            var assignTableCommand = new AssignTable
            {
                WaiterId    = hireWaiterCommand.Id,
                TableNumber = addTableCommand.Number
            };

            // Act
            var response = await httpClient
                           .PostAsJsonAsync(WaiterRoute("table/assign"), assignTableCommand);

            // Assert
            var expectedLinks = new List <string>
            {
                LinkNames.Self,
                LinkNames.Waiter.GetEmployedWaiters,
                LinkNames.Waiter.Hire
            };

            await response.ShouldBeAResource <AssignTableResource>(expectedLinks);
        },
            fixture);
예제 #21
0
        public async Task CanOpenTab(OpenTab openTabCommand, HireWaiter hireWaiterCommand, AddTable addTableCommand)
        {
            // Arrange
            await _helper.SetupWaiterWithTable(hireWaiterCommand, addTableCommand);

            // Make sure we're trying to open a tab on the added table
            openTabCommand.TableNumber = addTableCommand.Number;

            // Act
            var result = await _fixture.SendAsync(openTabCommand);

            // Assert
            await _helper.AssertTabExists(
                openTabCommand.Id,
                t => t.IsOpen == true &&
                t.WaiterName == hireWaiterCommand.ShortName &&
                t.CustomerName == openTabCommand.CustomerName);
        }
예제 #22
0
        public async Task CannotOpenExistingTab(OpenTab openTabCommand, HireWaiter hireWaiterCommand, AddTable addTableCommand)
        {
            // Arrange
            await _helper.SetupWaiterWithTable(hireWaiterCommand, addTableCommand);

            // Make sure we're trying to open a tab on the added table
            openTabCommand.TableNumber = addTableCommand.Number;

            // Open a tab once
            await _fixture.SendAsync(openTabCommand);

            // Act
            // Make sure we won't be getting a conflict on the table numbers
            openTabCommand.TableNumber += 10;

            var result = await _fixture.SendAsync(openTabCommand);

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.Conflict);
        }
예제 #23
0
        public async Task AssignedWaitersShouldReceiveBillRequestedMessage(HireWaiter hireWaiterCommand, AddTable addTableCommand, Register registerCommand)
        {
            // Arrange
            var testConnection = await BuildTestTableActionConnection <BillRequested>(
                hireWaiterCommand,
                addTableCommand,
                registerCommand);

            await testConnection.OpenAsync();

            var requestBillCommand = new RequestBill
            {
                TableNumber = addTableCommand.Number
            };

            // Act
            await _fixture.SendAsync(requestBillCommand);

            // Assert
            await testConnection.VerifyMessageReceived <BillRequested>(
                e => e.TableNumber == addTableCommand.Number &&
                e.WaiterId == hireWaiterCommand.Id,
                Times.Once());
        }
예제 #24
0
        public async Task CannotOpenATabOnATakenTable(OpenTab openTabCommand, HireWaiter hireWaiterCommand, AddTable addTableCommand)
        {
            // Arrange
            await _helper.SetupWaiterWithTable(hireWaiterCommand, addTableCommand);

            // Make sure we're trying to open a tab on the added table
            openTabCommand.TableNumber = addTableCommand.Number;

            // Open a tab once
            await _fixture.SendAsync(openTabCommand);

            // Act
            // Setting a new id for the command so we don't get a conflict on the tab id
            openTabCommand.Id = Guid.NewGuid();

            var result = await _fixture.SendAsync(openTabCommand);

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.Conflict);
        }
예제 #25
0
        private async Task <TestHubConnection> BuildTestTableActionConnection <TEvent>(HireWaiter hireWaiterCommand, AddTable addTableCommand, Register registerCommand)
        {
            await HireWaiterWithTable(hireWaiterCommand, addTableCommand);

            await _fixture.SendAsync(registerCommand);

            var assignWaiterToAccountCommand = new AssignWaiterToAccount
            {
                AccountId = registerCommand.Id,
                WaiterId  = hireWaiterCommand.Id
            };

            await _fixture.SendAsync(assignWaiterToAccountCommand);

            var accessToken = (await _authHelper
                               .Login(registerCommand.Email, registerCommand.Password))
                              .TokenString;

            return(BuildTestConnection <TEvent>(accessToken));
        }
예제 #26
0
 public async Task <IActionResult> AddTable([FromBody] AddTable command) =>
 (await Mediator.Send(command)
  .MapAsync(ToEmptyResourceAsync <AddTableResource>))
 .Match(Ok, Error);