Esempio n. 1
0
        public async Task <(string rpta, List <object> objects)> Login(string usuario, string pass, string fecha)
        {
            string rpta = "OK";

            List <object> objects  = new List <object>();
            Empleado      empleado = new Empleado();
            Turno         turno    = new Turno();

            DataSet       ds     = new DataSet("Login");
            SqlConnection SqlCon = new SqlConnection();

            SqlCon.InfoMessage += new SqlInfoMessageEventHandler(SqlCon_InfoMessage);
            SqlCon.FireInfoMessageEventOnUserErrors = true;
            try
            {
                StringBuilder consulta = new StringBuilder();
                SqlCommand    Sqlcmd;
                SqlCon.ConnectionString = Conexion.Cn;
                await SqlCon.OpenAsync();

                Sqlcmd = new SqlCommand
                {
                    Connection  = SqlCon,
                    CommandText = "sp_Login",
                    CommandType = CommandType.StoredProcedure
                };

                SqlParameter Usuario = new SqlParameter
                {
                    ParameterName = "@Usuario",
                    SqlDbType     = SqlDbType.VarChar,
                    Size          = 50,
                    Value         = usuario.Trim()
                };
                Sqlcmd.Parameters.Add(Usuario);

                SqlParameter Pass = new SqlParameter
                {
                    ParameterName = "@Pass",
                    SqlDbType     = SqlDbType.VarChar,
                    Size          = 50,
                    Value         = pass.Trim()
                };
                Sqlcmd.Parameters.Add(Pass);

                SqlParameter Fecha = new SqlParameter
                {
                    ParameterName = "@Fecha",
                    SqlDbType     = SqlDbType.VarChar,
                    Size          = 50,
                    Value         = fecha.Trim()
                };
                Sqlcmd.Parameters.Add(Fecha);

                SqlDataAdapter SqlData = new SqlDataAdapter(Sqlcmd);
                await Task.Run(() => SqlData.Fill(ds));

                bool   result       = false;
                string tipo_usuario = "";
                //1->Primer tabla es la respuesta
                DataTable dtRespuesta = ds.Tables[0];
                if (dtRespuesta.Rows.Count > 0)
                {
                    //Comprobar respuesta
                    string respuestaSQL = Convert.ToString(dtRespuesta.Rows[0]["Respuesta"]);
                    if (respuestaSQL.Equals("OK"))
                    {
                        tipo_usuario = Convert.ToString(dtRespuesta.Rows[0]["Tipo_usuario"]);
                        result       = true;
                    }
                    else
                    {
                        throw new Exception(respuestaSQL);
                    }
                }
                else
                {
                    throw new Exception("No se encontró la respuesta del procedimiento");
                }

                if (result)
                {
                    if (tipo_usuario.Equals("CAJERO"))
                    {
                        if (ds.Tables.Count >= 3)
                        {
                            DataTable dtEmpleado = ds.Tables[1];

                            //Obtener la credencial
                            if (dtEmpleado.Rows.Count > 0)
                            {
                                empleado = new Empleado(dtEmpleado.Rows[0]);
                            }
                            else
                            {
                                throw new Exception("No se encontraron las credenciales");
                            }

                            DataTable dtTurno = ds.Tables[2];

                            //Obtener el último turno
                            if (dtTurno.Rows.Count > 0)
                            {
                                turno = new Turno(dtTurno.Rows[0]);
                            }
                            else
                            {
                                throw new Exception("No se encontró el turno");
                            }

                            objects.Add(empleado);
                            objects.Add(turno);
                        }
                        else
                        {
                            throw new Exception("Las tablas del procedimiento Login no vienen completas, son 3 y vienen: " +
                                                ds.Tables.Count);
                        }
                    }
                    else if (tipo_usuario.Equals("ADMINISTRADOR"))
                    {
                    }
                }
                else
                {
                    throw new Exception("No se pudo iniciar sesión");
                }
            }
            catch (SqlException ex)
            {
                rpta = ex.Message;
            }
            catch (Exception ex)
            {
                rpta = ex.Message;
            }
            finally
            {
                if (SqlCon.State == ConnectionState.Open)
                {
                    SqlCon.Close();
                }
            }

            return(rpta, objects);
        }
Esempio n. 2
0
 public void Ingresar(Turno u)
 {
     BD.TurnoSet.Add(u);
     BD.SaveChanges();
 }