コード例 #1
0
ファイル: RecursosBdBll.cs プロジェクト: n-bam/pizza_byte
        /// <summary>
        /// Restaura o banco de dados a partir do backup
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool RestaurarBackup(RequisicaoArquivoDto requisicaoDto, ref RetornoDto retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.RestaurarBackup, Guid.Empty, mensagemErro);
                return(false);
            }

            try
            {
                PizzaByteContexto context = new PizzaByteContexto();
                Byte[]            bytes   = Convert.FromBase64String(requisicaoDto.ArquivoBase64);

                string comandosSql = Encoding.UTF8.GetString(bytes);

                string backupDescriptografado = "";
                if (!UtilitarioBll.DescriptografarString(comandosSql, ref backupDescriptografado))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Erro ao criptografar o backup";
                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.RestaurarBackup, Guid.Empty, retornoDto.Mensagem);
                    return(false);
                }

                using (SqlConnection conn = new SqlConnection(context.Database.Connection.ConnectionString))
                {
                    Server server = new Server(new ServerConnection(conn));
                    if (server.ConnectionContext.ExecuteNonQuery(backupDescriptografado) < 0)
                    {
                        retornoDto.Mensagem = "Falha ao restaurar o backup: ";

                        retornoDto.Retorno = false;
                        logBll.ResgistrarLog(requisicaoDto, LogRecursos.RestaurarBackup, Guid.Empty, retornoDto.Mensagem);
                        return(false);
                    }
                }
                retornoDto.Retorno = true;
                return(true);
            }
            catch (Exception ex)
            {
                retornoDto.Mensagem = "Falha ao restaurar o backup: " + ex.Message;

                retornoDto.Retorno = false;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.RestaurarBackup, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }
        }
コード例 #2
0
ファイル: MovimentoCaixaBll.cs プロジェクト: n-bam/pizza_byte
        /// <summary>
        /// Obtem o total de entrega por profissional
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool ObterTotalEntregaPorProfissional(RequisicaoDataDto requisicaoDto, ref RetornoObterTotalEntregaPorProfissionalDto retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterTotalEntregaPorProfissional, Guid.Empty, mensagemErro);
                return(false);
            }

            List <SqlParameter> listaFiltros = new List <SqlParameter>();

            listaFiltros.Add(new SqlParameter("dataCaixa", requisicaoDto.Data.Date));

            string query = "SELECT CAST(ISNULL(SUM(TaxaEntrega), 0) AS float) AS TotalEntregas," +
                           " f.Nome AS NomeProfissional" +
                           " FROM PizzaByte.PedidosEntregas AS e" +
                           " INNER JOIN PizzaByte.Pedidos AS p ON e.IdPedido = p.Id" +
                           " INNER JOIN PizzaByte.Funcionarios AS f ON e.IdFuncionario = f.Id AND f.Inativo = 0" +
                           " AND f.Excluido = 0" +
                           " WHERE CAST(e.DataInclusao AS Date) = @dataCaixa AND e.Inativo = 0 AND e.Excluido = 0" +
                           " AND e.IdFuncionario IS NOT NULL" +
                           " GROUP BY f.Nome" +
                           " ORDER BY f.Nome";

            try
            {
                PizzaByteContexto contexto = new PizzaByteContexto();
                retornoDto.ListaTotais = contexto.Database.SqlQuery <TotalPorProfissional>(query, listaFiltros.ToArray()).ToList();

                retornoDto.Retorno  = true;
                retornoDto.Mensagem = "Ok";
                return(true);
            }
            catch (Exception ex)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao obter os dados: " + ex.Message;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterTotalEntregaPorProfissional, Guid.Empty, mensagemErro);
                return(false);
            }
        }
コード例 #3
0
ファイル: MovimentoCaixaBll.cs プロジェクト: n-bam/pizza_byte
        /// <summary>
        /// Obtem os dados necessários para popular a tela de caixa
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool ObterFormasPagamentoDia(RequisicaoDataDto requisicaoDto, ref RetornoObterResumoCaixaDto retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterInformacoesDashboard, Guid.Empty, mensagemErro);
                return(false);
            }

            List <SqlParameter> listaFiltros = new List <SqlParameter>();
            string query = "SELECT CAST(ISNULL(SUM(RecebidoDinheiro), 0) AS float) AS RecebidoDinheiro," +
                           " CAST(ISNULL(SUM(RecebidoCredito), 0) AS float) AS RecebidoCredito," +
                           " CAST(ISNULL(SUM(RecebidoDebito), 0) AS float) AS RecebidoDebito," +
                           " CAST(ISNULL(SUM(Troco), 0) AS float) AS Troco," +
                           " CAST(ISNULL(SUM(TaxaEntrega), 0) AS float) AS TaxaEntrega" +
                           " FROM PizzaByte.Pedidos" +
                           " WHERE CAST(DataInclusao AS Date) = @dataCaixa AND Inativo = 0 AND Excluido = 0";

            listaFiltros.Add(new SqlParameter("dataCaixa", requisicaoDto.Data.Date));

            try
            {
                PizzaByteContexto contexto = new PizzaByteContexto();
                retornoDto             = contexto.Database.SqlQuery <RetornoObterResumoCaixaDto>(query, listaFiltros.ToArray()).FirstOrDefault();
                retornoDto.TotalVendas = (retornoDto.RecebidoDinheiro - retornoDto.Troco) + retornoDto.RecebidoCredito + retornoDto.RecebidoDebito;

                retornoDto.Retorno  = true;
                retornoDto.Mensagem = "Ok";
                return(true);
            }
            catch (Exception ex)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao obter os dados: " + ex.Message;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterInformacoesDashboard, Guid.Empty, mensagemErro);
                return(false);
            }
        }
コード例 #4
0
 /// <summary>
 /// Iniciar com um contexto existente, indicando se deve ou não salvar as alterações
 /// </summary>
 /// <param name="contexto"></param>
 /// <param name="salvarAlteracoes"></param>
 public ClienteEnderecoBll(PizzaByteContexto contexto, bool salvarAlteracoes) : base(logBll, contexto)
 {
     salvar = salvarAlteracoes;
 }
コード例 #5
0
 /// <summary>
 /// Iniciar com um contexto existente, indicando se deve ou não salvar as alterações
 /// </summary>
 /// <param name="contexto"></param>
 /// <param name="salvarAlteracoes"></param>
 public CepBll(PizzaByteContexto contexto, bool salvarAlteracoes) : base(logBll, contexto)
 {
     salvar = salvarAlteracoes;
 }
コード例 #6
0
 /// <summary>
 /// Iniciar com um contexto existente, indicando se deve ou não salvar as alterações
 /// </summary>
 /// <param name="contexto"></param>
 /// <param name="salvarAlteracoes"></param>
 public PedidoEntregaBll(PizzaByteContexto contexto, bool salvarAlteracoes) : base(logBll, contexto)
 {
     salvar = salvarAlteracoes;
 }
コード例 #7
0
ファイル: RecursosBdBll.cs プロジェクト: n-bam/pizza_byte
        /// <summary>
        /// Executa o backup do sistema e retorna um arquivo .sql
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool FazerBackupSistema(BaseRequisicaoDto requisicaoDto, ref RetornoObterArquivoDto retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.BaseIncluir, Guid.Empty, mensagemErro);
                return(false);
            }

            PizzaByteContexto context = new PizzaByteContexto();

            try
            {
                StringBuilder deletes   = new StringBuilder(string.Empty);
                StringBuilder inserts   = new StringBuilder(string.Empty);
                StringBuilder insertsFk = new StringBuilder(string.Empty);

                ScriptingOptions scriptOptions = new ScriptingOptions();
                SqlConnection    conn          = new SqlConnection(context.Database.Connection.ConnectionString);
                Server           srv1          = new Server(new ServerConnection(conn));
                Database         db1           = srv1.Databases[context.Database.Connection.Database];

                deletes.AppendLine("Use " + context.Database.Connection.Database);
                deletes.AppendLine("GO ");
                deletes.AppendLine("BEGIN TRY ");
                deletes.AppendLine("BEGIN TRANSACTION ");

                List <string> tabelasComChaveEstrangeira = new List <string>();

                Scripter scr = new Scripter(srv1);
                foreach (Table table in db1.Tables)
                {
                    for (int i = 0; i < table.ForeignKeys.Count; i++)
                    {
                        if (!tabelasComChaveEstrangeira.Contains(table.ForeignKeys[i].ReferencedTable))
                        {
                            if (table.ForeignKeys[i].ReferencedTable == "Pedidos")
                            {
                                tabelasComChaveEstrangeira.Insert(0, table.ForeignKeys[i].ReferencedTable);
                            }
                            else
                            {
                                tabelasComChaveEstrangeira.Add(table.ForeignKeys[i].ReferencedTable);
                            }
                        }
                    }
                }

                // Tabelas que não fazer a fk de outras tabelas
                foreach (Table table in db1.Tables)
                {
                    if (table.Name != "__MigrationHistory" && !tabelasComChaveEstrangeira.Contains(table.Name))
                    {
                        ScriptingOptions options = new ScriptingOptions();
                        options.DriAll       = false;
                        options.ScriptSchema = false;
                        options.ScriptData   = true;
                        scr.Options          = options;

                        deletes.AppendLine("DELETE FROM [PizzaByte].[" + table.Name + "]");

                        // Add script to file content
                        foreach (string scriptLine in scr.EnumScript(new Urn[] { table.Urn }))
                        {
                            string line = scriptLine;
                            line = line.Replace("SET ANSI_NULLS ON", string.Empty);
                            line = line.Replace("SET QUOTED_IDENTIFIER ON", string.Empty);
                            line = line.Replace("SET ANSI_NULLS OFF", string.Empty);
                            line = line.Replace("SET QUOTED_IDENTIFIER OFF", string.Empty);
                            inserts.AppendLine(line.Trim());
                        }
                    }
                }

                deletes.AppendLine("DELETE FROM [PizzaByte].[Pedidos]");

                // Depois as tabelas que são fk
                foreach (Table table in db1.Tables)
                {
                    if (table.Name != "__MigrationHistory" && tabelasComChaveEstrangeira.Contains(table.Name))
                    {
                        ScriptingOptions options = new ScriptingOptions();
                        options.DriAll       = false;
                        options.ScriptSchema = false;
                        options.ScriptData   = true;
                        scr.Options          = options;

                        if (table.Name != "Pedidos")
                        {
                            deletes.AppendLine("DELETE FROM [PizzaByte].[" + table.Name + "]");
                        }

                        // Add script to file content
                        foreach (string scriptLine in scr.EnumScript(new Urn[] { table.Urn }))
                        {
                            string line = scriptLine;
                            line = line.Replace("SET ANSI_NULLS ON", string.Empty);
                            line = line.Replace("SET QUOTED_IDENTIFIER ON", string.Empty);
                            line = line.Replace("SET ANSI_NULLS OFF", string.Empty);
                            line = line.Replace("SET QUOTED_IDENTIFIER OFF", string.Empty);
                            insertsFk.AppendLine(line.Trim());
                        }
                    }
                }

                deletes.Append(insertsFk.ToString());
                deletes.Append(inserts.ToString());
                deletes.AppendLine("COMMIT TRAN ");
                deletes.AppendLine("END TRY ");
                deletes.AppendLine("BEGIN CATCH ");
                deletes.AppendLine("ROLLBACK TRAN ");
                deletes.AppendLine("END CATCH ");

                string backupCriptografado = "";
                if (!UtilitarioBll.CriptografarString(deletes.ToString(), ref backupCriptografado))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Erro ao criptografar o backup";
                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.Backup, Guid.Empty, retornoDto.Mensagem);
                    return(false);
                }

                byte[] bytes  = Encoding.UTF8.GetBytes(backupCriptografado);
                string base64 = Convert.ToBase64String(bytes);

                retornoDto.ArquivoBase64 = base64;
                return(true);
            }
            catch (Exception ex)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Erro ao executar o backup: " + ex.Message;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.Backup, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }
        }
コード例 #8
0
ファイル: MovimentoCaixaBll.cs プロジェクト: n-bam/pizza_byte
 /// <summary>
 /// Iniciar com um contexto existente, indicando se deve ou não salvar as alterações
 /// </summary>
 /// <param name="contexto"></param>
 /// <param name="salvarAlteracoes"></param>
 public MovimentoCaixaBll(PizzaByteContexto contexto, bool salvarAlteracoes) : base(logBll, contexto)
 {
     salvar = salvarAlteracoes;
 }
コード例 #9
0
 /// <summary>
 /// Iniciar com um contexto existente, indicando se deve ou não salvar as alterações
 /// </summary>
 /// <param name="contexto"></param>
 /// <param name="salvarAlteracoes"></param>
 public FuncionarioBll(PizzaByteContexto contexto, bool salvarAlteracoes) : base(logBll, contexto)
 {
     salvar = salvarAlteracoes;
 }
コード例 #10
0
 /// <summary>
 /// Construtor que iniciar o contexto
 /// </summary>
 /// <param name="contextoExistente"></param>
 public BaseBll(LogBll log, PizzaByteContexto contextoExistente)
 {
     logBll            = log;
     pizzaByteContexto = contextoExistente;
 }
コード例 #11
0
 /// <summary>
 /// Construtor que iniciar o contexto
 /// </summary>
 public BaseBll(LogBll log)
 {
     logBll            = log;
     pizzaByteContexto = new PizzaByteContexto();
 }
コード例 #12
0
        public override void Up()
        {
            PizzaByteContexto contexto = new PizzaByteContexto();

            if (!contexto.Database.Exists())
            {
                Sql("CREATE DATABASE PizzariaNacoes COLLATE COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI");
            }

            CreateTable(
                "PizzaByte.Ceps",
                c => new
            {
                Id            = c.Guid(nullable: false),
                Logradouro    = c.String(nullable: false, maxLength: 150, unicode: false),
                Cidade        = c.String(nullable: false, maxLength: 50, unicode: false),
                Bairro        = c.String(nullable: false, maxLength: 50, unicode: false),
                Cep           = c.String(nullable: false, maxLength: 8, unicode: false),
                DataInclusao  = c.DateTime(nullable: false),
                DataAlteracao = c.DateTime(),
                Excluido      = c.Boolean(nullable: false),
            })
            .PrimaryKey(t => t.Id)
            .Index(t => t.Id, unique: true)
            .Index(t => t.Cep, unique: true);

            CreateTable(
                "PizzaByte.Clientes",
                c => new
            {
                Id            = c.Guid(nullable: false),
                Nome          = c.String(nullable: false, maxLength: 150, unicode: false),
                Telefone      = c.String(maxLength: 20, unicode: false),
                Cpf           = c.String(maxLength: 11, unicode: false),
                DataInclusao  = c.DateTime(nullable: false),
                DataAlteracao = c.DateTime(),
                Inativo       = c.Boolean(nullable: false),
                Excluido      = c.Boolean(nullable: false),
            })
            .PrimaryKey(t => t.Id)
            .Index(t => t.Id, unique: true)
            .Index(t => t.Nome, name: "ix_Nome_Cliente");

            CreateTable(
                "PizzaByte.ClientesEnderecos",
                c => new
            {
                Id                  = c.Guid(nullable: false),
                NumeroEndereco      = c.String(nullable: false, maxLength: 10, unicode: false),
                ComplementoEndereco = c.String(maxLength: 50, unicode: false),
                IdCliente           = c.Guid(nullable: false),
                IdCep               = c.Guid(nullable: false),
                DataInclusao        = c.DateTime(nullable: false),
                DataAlteracao       = c.DateTime(),
                Inativo             = c.Boolean(nullable: false),
                Excluido            = c.Boolean(nullable: false),
            })
            .PrimaryKey(t => t.Id)
            .ForeignKey("PizzaByte.Clientes", t => t.IdCliente, cascadeDelete: true)
            .ForeignKey("PizzaByte.Ceps", t => t.IdCep, cascadeDelete: true)
            .Index(t => t.IdCliente, name: "IX_Cliente_Endereco")
            .Index(t => t.IdCep);

            CreateTable(
                "PizzaByte.ContaPagar",
                c => new
            {
                Id              = c.Guid(nullable: false),
                DataPagamento   = c.DateTime(storeType: "date"),
                IdFornecedor    = c.Guid(),
                DataVencimento  = c.DateTime(nullable: false, storeType: "date"),
                Descricao       = c.String(nullable: false, maxLength: 200, unicode: false),
                Valor           = c.Single(nullable: false),
                DataCompetencia = c.DateTime(nullable: false, storeType: "date"),
                Status          = c.Int(nullable: false),
                DataInclusao    = c.DateTime(nullable: false),
                DataAlteracao   = c.DateTime(),
                Excluido        = c.Boolean(nullable: false),
            })
            .PrimaryKey(t => t.Id)
            .Index(t => t.Descricao, name: "ix_Nome_ContaPagar");

            CreateTable(
                "PizzaByte.ContaReceber",
                c => new
            {
                Id              = c.Guid(nullable: false),
                IdPedido        = c.Guid(),
                DataVencimento  = c.DateTime(nullable: false, storeType: "date"),
                Descricao       = c.String(nullable: false, maxLength: 200, unicode: false),
                Valor           = c.Single(nullable: false),
                DataCompetencia = c.DateTime(nullable: false, storeType: "date"),
                Status          = c.Int(nullable: false),
                DataInclusao    = c.DateTime(nullable: false),
                DataAlteracao   = c.DateTime(),
                Excluido        = c.Boolean(nullable: false),
            })
            .PrimaryKey(t => t.Id)
            .Index(t => t.Descricao, name: "ix_Nome_ContaReceber");

            CreateTable(
                "PizzaByte.Fornecedores",
                c => new
            {
                Id                  = c.Guid(nullable: false),
                NomeFantasia        = c.String(nullable: false, maxLength: 150, unicode: false),
                RazaoSocial         = c.String(maxLength: 150, unicode: false),
                Telefone            = c.String(maxLength: 20, unicode: false),
                Cnpj                = c.String(maxLength: 14, unicode: false),
                NumeroEndereco      = c.String(maxLength: 10, unicode: false),
                ComplementoEndereco = c.String(maxLength: 50, unicode: false),
                Obs                 = c.String(maxLength: 2000, unicode: false),
                IdCep               = c.Guid(),
                DataInclusao        = c.DateTime(nullable: false),
                DataAlteracao       = c.DateTime(),
                Inativo             = c.Boolean(nullable: false),
                Excluido            = c.Boolean(nullable: false),
            })
            .PrimaryKey(t => t.Id)
            .ForeignKey("PizzaByte.Ceps", t => t.IdCep)
            .Index(t => t.NomeFantasia, name: "ix_NomeFantasia_Usuario")
            .Index(t => t.Cnpj)
            .Index(t => t.IdCep);

            CreateTable(
                "PizzaByte.Funcionarios",
                c => new
            {
                Id            = c.Guid(nullable: false),
                Nome          = c.String(nullable: false, maxLength: 150, unicode: false),
                Telefone      = c.String(maxLength: 20, unicode: false),
                Tipo          = c.Int(nullable: false),
                DataInclusao  = c.DateTime(nullable: false),
                DataAlteracao = c.DateTime(),
                Inativo       = c.Boolean(nullable: false),
                Excluido      = c.Boolean(nullable: false),
            })
            .PrimaryKey(t => t.Id)
            .Index(t => t.Nome, name: "ix_Nome_Funcionario");

            CreateTable(
                "PizzaByte.Log",
                c => new
            {
                Id           = c.Guid(nullable: false),
                Recurso      = c.Int(nullable: false),
                IdUsuario    = c.Guid(nullable: false),
                IdEntidade   = c.Guid(nullable: false),
                Mensagem     = c.String(nullable: false, maxLength: 8000, unicode: false),
                DataInclusao = c.DateTime(nullable: false),
            })
            .PrimaryKey(t => t.Id)
            .Index(t => t.Recurso, name: "ix_Recurso_Log");

            CreateTable(
                "PizzaByte.MovimentosCaixa",
                c => new
            {
                Id            = c.Guid(nullable: false),
                Justificativa = c.String(nullable: false, maxLength: 8000, unicode: false),
                Valor         = c.Single(nullable: false),
                DataInclusao  = c.DateTime(nullable: false),
            })
            .PrimaryKey(t => t.Id)
            .Index(t => t.DataInclusao, name: "ix_Data_MovimentoCaixa");

            CreateTable(
                "PizzaByte.Pedidos",
                c => new
            {
                Id                        = c.Guid(nullable: false),
                Tipo                      = c.Int(nullable: false),
                Total                     = c.Single(nullable: false),
                Troco                     = c.Single(nullable: false),
                TaxaEntrega               = c.Single(nullable: false),
                RecebidoDinheiro          = c.Single(nullable: false),
                RecebidoCredito           = c.Single(nullable: false),
                RecebidoDebito            = c.Single(nullable: false),
                Obs                       = c.String(maxLength: 2000, unicode: false),
                PedidoIfood               = c.Boolean(nullable: false),
                JustificativaCancelamento = c.String(maxLength: 100, unicode: false),
                IdCliente                 = c.Guid(),
                DataInclusao              = c.DateTime(nullable: false),
                DataAlteracao             = c.DateTime(),
                Inativo                   = c.Boolean(nullable: false),
                Excluido                  = c.Boolean(nullable: false),
            })
            .PrimaryKey(t => t.Id)
            .ForeignKey("PizzaByte.Clientes", t => t.IdCliente)
            .Index(t => t.IdCliente, name: "ix_IdCliente_Pedido");

            CreateTable(
                "PizzaByte.PedidosEntregas",
                c => new
            {
                Id            = c.Guid(nullable: false),
                Conferido     = c.Boolean(nullable: false),
                ValorRetorno  = c.Single(nullable: false),
                Obs           = c.String(maxLength: 2000, unicode: false),
                IdEndereco    = c.Guid(nullable: false),
                IdFuncionario = c.Guid(),
                IdPedido      = c.Guid(nullable: false),
                DataInclusao  = c.DateTime(nullable: false),
                DataAlteracao = c.DateTime(),
                Inativo       = c.Boolean(nullable: false),
                Excluido      = c.Boolean(nullable: false),
            })
            .PrimaryKey(t => t.Id)
            .ForeignKey("PizzaByte.ClientesEnderecos", t => t.IdEndereco, cascadeDelete: true)
            .ForeignKey("PizzaByte.Funcionarios", t => t.IdFuncionario)
            .ForeignKey("PizzaByte.Pedidos", t => t.IdPedido, cascadeDelete: true)
            .Index(t => t.IdEndereco, name: "ix_IdEndereco_Entrega")
            .Index(t => t.IdFuncionario)
            .Index(t => t.IdPedido, name: "ix_IdPedido_Entrega");

            CreateTable(
                "PizzaByte.PedidosItens",
                c => new
            {
                Id = c.Guid(nullable: false),
                DescricaoProduto  = c.String(nullable: false, maxLength: 300, unicode: false),
                PrecoProduto      = c.Single(nullable: false),
                TipoProduto       = c.Int(nullable: false),
                Quantidade        = c.Single(nullable: false),
                IdProdutoComposto = c.Guid(),
                IdProduto         = c.Guid(nullable: false),
                IdPedido          = c.Guid(nullable: false),
                DataInclusao      = c.DateTime(nullable: false),
                DataAlteracao     = c.DateTime(),
                Inativo           = c.Boolean(nullable: false),
                Excluido          = c.Boolean(nullable: false),
            })
            .PrimaryKey(t => t.Id)
            .ForeignKey("PizzaByte.Pedidos", t => t.IdPedido, cascadeDelete: true)
            .ForeignKey("PizzaByte.Produtos", t => t.IdProduto, cascadeDelete: true)
            .ForeignKey("PizzaByte.Produtos", t => t.IdProdutoComposto)
            .Index(t => t.IdProdutoComposto)
            .Index(t => t.IdProduto)
            .Index(t => t.IdPedido, name: "ix_IdPedido_Item");

            CreateTable(
                "PizzaByte.Produtos",
                c => new
            {
                Id            = c.Guid(nullable: false),
                Descricao     = c.String(nullable: false, maxLength: 150, unicode: false),
                Preco         = c.Single(nullable: false),
                Detalhes      = c.String(maxLength: 200, unicode: false),
                Tipo          = c.Int(nullable: false),
                DataInclusao  = c.DateTime(nullable: false),
                DataAlteracao = c.DateTime(),
                Inativo       = c.Boolean(nullable: false),
                Excluido      = c.Boolean(nullable: false),
            })
            .PrimaryKey(t => t.Id)
            .Index(t => t.Id, unique: true, name: "IX_Produto_Id")
            .Index(t => t.Descricao, unique: true, name: "IX_Produto_Descricao");

            Sql("INSERT INTO PizzaByte.Produtos(Id, Descricao, Preco, Tipo, DataInclusao, DataAlteracao, Inativo, Excluido) " +
                "Values('E6219299-E232-43C8-B07E-C7B1CAD8C19D', 'Brinde da promoção (seg-qui)', 0, 2, GETDATE(), NULL, 0, 0)");

            CreateTable(
                "PizzaByte.Suporte",
                c => new
            {
                Id           = c.Guid(nullable: false),
                Mensagem     = c.String(nullable: false, maxLength: 500, unicode: false),
                Tipo         = c.Int(nullable: false),
                DataInclusao = c.DateTime(nullable: false),
                Excluido     = c.Boolean(nullable: false),
            })
            .PrimaryKey(t => t.Id);

            CreateTable(
                "PizzaByte.TaxasEntrega",
                c => new
            {
                Id            = c.Guid(nullable: false),
                BairroCidade  = c.String(nullable: false, maxLength: 101, unicode: false),
                ValorTaxa     = c.Single(nullable: false),
                DataInclusao  = c.DateTime(nullable: false),
                DataAlteracao = c.DateTime(),
                Excluido      = c.Boolean(nullable: false),
            })
            .PrimaryKey(t => t.Id)
            .Index(t => t.BairroCidade, unique: true, name: "IX_Bairro_TaxaEntrega");

            CreateTable(
                "PizzaByte.Usuarios",
                c => new
            {
                Id            = c.Guid(nullable: false),
                Nome          = c.String(nullable: false, maxLength: 150, unicode: false),
                Email         = c.String(nullable: false, maxLength: 100, unicode: false),
                Senha         = c.String(nullable: false, maxLength: 50, unicode: false),
                Administrador = c.Boolean(nullable: false),
                DataInclusao  = c.DateTime(nullable: false),
                DataAlteracao = c.DateTime(),
                Inativo       = c.Boolean(nullable: false),
                Excluido      = c.Boolean(nullable: false),
            })
            .PrimaryKey(t => t.Id)
            .Index(t => t.Email, unique: true, name: "IX_Email_Usuario");
        }