Пример #1
0
        public string IniciarAtendimento(string identificadorMesa, string identificadorFilial, bool trabalhaPorMesa, string identificadorFuncionario, string codPrefixoComanda, bool trabalhaComComanda)
        {
            string codigoComanda = string.Empty;


            using (SqlConnection con = new SqlConnection(_configuration.GetConnectionString("DbContext")))
            {
                con.Open();

                using (SqlTransaction transaction = con.BeginTransaction())
                {
                    var context = new BD.BancoContext(transaction.Connection);


                    context.Database.UseTransaction(transaction);

                    if (trabalhaPorMesa)
                    {
                        if (_mesaRepository.MesaDisponivel(identificadorMesa))
                        {
                            try
                            {
                                _mesaRepository.AtualizarEstado(identificadorMesa, Enumeradores.EstadoMesa.Ocupado, ref context);

                                string identificadorMesaAtendente = _mesaAtendenteRepository.GerarAtendimento(identificadorFuncionario, identificadorMesa,
                                                                                                              _mesaAtendenteRepository.GerarChaveAcesso(), identificadorFilial, ref context);

                                if (trabalhaComComanda)
                                {
                                    codigoComanda = _comandaRepository.GerarCodigoComanda(identificadorFilial, codPrefixoComanda, identificadorMesaAtendente, ref context);
                                }

                                transaction.Commit();
                            }
                            catch (Exception ex)
                            {
                                transaction.Rollback();
                                throw;
                            }
                        }
                        else
                        {
                            throw new Execao.ExecaoNegocio(Enumeradores.CodigosErros.ErroNegocio, "Mesa não se encontra disponível para abertura.");
                        }
                    }
                    else
                    {
                        try
                        {
                            string identificadorMesaAtendente = _mesaAtendenteRepository.GerarAtendimento(identificadorFuncionario, identificadorMesa,
                                                                                                          _mesaAtendenteRepository.GerarChaveAcesso(), identificadorFilial, ref context);

                            codigoComanda = _comandaRepository.GerarCodigoComanda(identificadorFilial, codPrefixoComanda, identificadorMesaAtendente, ref context);

                            transaction.Commit();
                        }
                        catch (Exception ex)
                        {
                            transaction.Rollback();
                            throw;
                        }
                    }
                }
            }
            return(codigoComanda);
        }