public bool AddPayment(TableDetailModel tableDetailModel, PaymentDetailModel paymentDetailModel)
        {
            // todo
            _connection.ChangeTracker.Clear();

            var entityPayment     = _connection.Payments.First(x => x.ID == paymentDetailModel.ID);
            var entityEntityTable = _connection.Tables.First(x => x.ID == tableDetailModel.ID);

            if (!entityEntityTable.Payments.Contains(entityPayment))
            {
                if (entityEntityTable.Payments.Count is 1)
                {
                    entityEntityTable.Payments.ToList()[0].IsPartial = true;
                    entityPayment.IsPartial = true;
                }

                entityEntityTable.Payments.Add(Mapper.MapDetailModelToEntity(paymentDetailModel));

                return(_connection.SaveChanges() is 2);
            }
            else
            {
                return(false);
            }
        }
        public bool RemoveTable(TableDetailModel tableDetailModel)
        {
            _connection.ChangeTracker.Clear();

            _connection.Tables.Remove(Mapper.MapDetailModelToEntity(tableDetailModel));
            return(_connection.SaveChanges() is 1);
        }
        public bool EditTable(TableDetailModel tableDetailModel)
        {
            _connection.ChangeTracker.Clear();

            var entityTable       = _connection.Tables.First(x => x.ID == tableDetailModel.ID);
            var mappedEntityTable = Mapper.MapDetailModelToEntity(tableDetailModel);

            if (entityTable != mappedEntityTable)
            {
                _connection.Entry(entityTable).CurrentValues.SetValues(mappedEntityTable);

                return(_connection.SaveChanges() is 1);
            }
            else
            {
                return(false);
            }
        }
        public bool AddTable(TableDetailModel tableDetailModel)
        {
            _connection.ChangeTracker.Clear();

            var entity = Mapper.MapDetailModelToEntity(tableDetailModel);

            entity.TableInfo = _connection.TableInfos.FirstOrDefault(x => x.ID == tableDetailModel.TableInfo.ID);

            _connection.Tables.Add(entity);

            var res = _connection.SaveChanges() is 1;

            if (res)
            {
                tableDetailModel.ID = entity.ID;
            }

            return(res);
        }
        public bool CloseTable(TableDetailModel tableDetailModel)
        {
            tableDetailModel.EndDateTime = DateTime.Now;

            return(EditTable(tableDetailModel));
        }