jueves, 23 de julio de 2015

Consultas LINQ

//******************************************************************
//Clase Cliente

using System.Data.Linq.Mapping;

namespace _2015_A_13_LINQ
{
    [Table (Name="clientes")]
    public class Cliente
    {
        //sin get ni set para la base de datos
        //se define como publicas para texto plano
        [Column(AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
        public int id;
        [Column]
        public String nombre;
        [Column]
        public int anionacimiento;

        public override string ToString()
        {
            return "ID: "+id+", Nombre: "+nombre+", Año Nacimiento: "+anionacimiento;
        }
    }
}
//*************************************************************
Formulario LINQ_BDD

namespace _2015_A_13_LINQ
{
    public partial class LINQ_BDD : Form
    {
        //Instancia de la Base de datos
        MiBD baseDatos = new MiBD();

        public LINQ_BDD()
        {
            InitializeComponent();
        }

        private void LINQ_BDD_Load(object sender, EventArgs e)
        {
            this.traerDatos();
            this.cargarIdentificador();
        }

        private void cargarIdentificador()
        {
            var consulta = from idcliente in this.baseDatos.clientes
                           where idcliente.id > 0
                           select (int)idcliente.id;
            foreach (var identificador in consulta)
            {
                lbl_Id.Text = Convert.ToString(identificador + 1);
            }
        }
        private void btn_Guardar_Click(object sender, EventArgs e)
        {
            Cliente clienteNuevo = new Cliente();
            //clienteNuevo.id = Convert.ToInt32(txt_Id.Text);
            clienteNuevo.nombre = txt_Nombre.Text;
            clienteNuevo.anionacimiento = Convert.ToInt32(txt_FechaNac.Text);

            //instancio de la base de datos y inserto de la tabla clientes
            baseDatos.clientes.InsertOnSubmit(clienteNuevo);
            baseDatos.SubmitChanges();
            this.limpiar();
            this.traerDatos();
            this.cargarIdentificador();
        }

        private void traerDatos()
        {
            var clientesConsulta = from registroCliente in baseDatos.clientes
                                   where registroCliente.id > 0
                                   select registroCliente;
           
            lst_Clientes.Items.Clear();
            foreach (var iterclientes in clientesConsulta)
            {
                lst_Clientes.Items.Add(iterclientes);
            }
        }

        private void limpiar()
        {
            txt_Nombre.Clear();
            txt_FechaNac.Clear();
        }

        private void btn_Eliminar_Click(object sender, EventArgs e)
        {
            var resultado = MessageBox.Show("Desea eliminar al cliente?","Eliminar", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (resultado == DialogResult.Yes)
            {
                Cliente clienteEliminar = (Cliente)lst_Clientes.SelectedItem;
                baseDatos.clientes.DeleteOnSubmit(clienteEliminar);
                baseDatos.SubmitChanges();
                lst_Clientes.Items.Remove(clienteEliminar);
            }
        }
    }
}
//**************************************************************************

Conexion SQL

//clase Conexion
using System.Data.Linq.Mapping;
using System.Data.Linq;
namespace Chat_Darwin
{
    class MyDataBase : DataContext
    {
        public MyDataBase() : base(Properties.Settings.Default.cadenaConexion) { }
        public Table<Usuario> usuarios;
        public Table<Conversacion> conversaciones;
        public Table<Mensaje> mensajes;
    }
}
//*********************************************************************************************
//Clase Usuario//********************************
using System.Data.Linq.Mapping;
namespace Chat_Darwin
{
    [Table(Name="usuario")]
    public class Usuario
    {
        [Column(IsPrimaryKey=true, AutoSync=AutoSync.OnInsert, IsDbGenerated=true)]
        public int id_User;
        [Column]
        public String nombre;
        [Column]
        public String login;
        [Column]
        public String password;
        public override string ToString()
        {
            return this.login;
        }
    }
}
//***************************************************************************************************************
//Clase conversacion//********************************************
using System.Data.Linq.Mapping;
namespace Chat_Darwin
{
    [Table(Name="conversacion")]
    public class Conversacion
    {
        [Column(IsPrimaryKey=true, AutoSync=AutoSync.OnInsert, IsDbGenerated=true)]
        public int id_Conversacion;
        [Column]
        public String tema_conversacion;
        public override string ToString()
        {
            return this.tema_conversacion;
        }
    }
}
//********************************************************************************************************
//Clase Mensaje//**********************************************************
using System.Data.Linq.Mapping;
namespace Chat_Darwin
{
    [Table(Name="mensaje")]
    public class Mensaje
    {
        [Column(IsPrimaryKey=true, AutoSync=AutoSync.OnInsert, IsDbGenerated=true)]
        public int id_Mensaje;
        [Column]
        public String texto;
        [Column]
        public int user_Id;
        [Column]
        public int conversacion_Id;
        public override string ToString()
        {
            return this.id_Mensaje + " " + this.texto + " " +this.user_Id+ " " +this.conversacion_Id;
        }
    }
}
//****************************************************************************************************
//*Formulario Login
namespace Chat_Darwin
{
    public partial class Login : Form
    {
        MyDataBase myDB = new MyDataBase();
        List<Usuario> lista_Usuario = new List<Usuario>();
        Usuario usu1 = new Usuario();
        List<Conversacion> lista_Conversacion = new List<Conversacion>();
        Conversacion conver1 = new Conversacion();

        public Login()
        {
            InitializeComponent();
        }
        public Login(List<Usuario> i_lista_Usuario, List<Conversacion> i_lista_Conversacion, Usuario i_usu1, Conversacion i_conver1)
        {
            conver1 = i_conver1;
            usu1 = i_usu1;
            lista_Conversacion = i_lista_Conversacion;
            lista_Usuario = i_lista_Usuario;
            InitializeComponent();
        }

        private void Login_Load(object sender, EventArgs e)
        {

        }

        private void btn_Registrar_Click(object sender, EventArgs e)
        {
            Crear_Cuenta crear = new Crear_Cuenta(lista_Usuario, lista_Conversacion, usu1, conver1);
            crear.Show();
            this.Hide();
        }

        private void btn_Ingresar_Click(object sender, EventArgs e)
        {
            var consulta_Usuario = from user in this.myDB.usuarios
                                   select new
                                   {
                                       id_usu = (int)user.id_User,
                                       nombre_usu = (String)user.nombre,
                                       login_usu = (String)user.login,
                                       password_usu = (String)user.password
                                   };
            foreach (var u in consulta_Usuario)
            {
                if (u.login_usu==txt_Username.Text && u.password_usu==txt_Password.Text)
                {
                    usu1.id_User = u.id_usu;
                    usu1.nombre = u.nombre_usu;
                    usu1.login = u.login_usu;
                    usu1.password = u.password_usu;
                    lista_Usuario.Add(usu1);

                    this.Hide();
                    Lista_Conversaciones listaConversacion = new Lista_Conversaciones(lista_Usuario, lista_Conversacion, usu1, conver1);
                    listaConversacion.Show();
                }
            }
        }
    }
}
//*******************************************************************
//Formulario Crear_Cuenta

namespace Chat_Darwin
{
    public partial class Crear_Cuenta : Form
    {
        MyDataBase myDB = new MyDataBase();
        List<Usuario> lista_Usuario = new List<Usuario>();
        Usuario usu1 = new Usuario();
        List<Conversacion> lista_Conversacion = new List<Conversacion>();
        Conversacion conver1 = new Conversacion();

        public Crear_Cuenta()
        {
            InitializeComponent();
        }

        public Crear_Cuenta(List<Usuario> i_lista_Usuario, List<Conversacion> i_lista_Conversacion, Usuario i_usu1, Conversacion i_conver1)
        {
            conver1 = i_conver1;
            usu1 = i_usu1;
            lista_Conversacion = i_lista_Conversacion;
            lista_Usuario = i_lista_Usuario;
            InitializeComponent();
        }

        private void Crear_Cuenta_Load(object sender, EventArgs e)
        {
            
        }

        private void btn_Guardar_Click(object sender, EventArgs e)
        {
            
            usu1.nombre = txt_Nombre.Text;
            usu1.login = txt_Username.Text;
            usu1.password = txt_Password.Text;
            lista_Usuario.Add(usu1);

            myDB.usuarios.InsertOnSubmit(usu1);
            myDB.SubmitChanges();
            txt_Nombre.Clear();
            txt_Username.Clear();
            txt_Password.Clear();

            Login log = new Login(lista_Usuario, lista_Conversacion, usu1, conver1);
            log.Show();
            this.Hide();
        }
    }
}

//***********************************************************************
//Formulario Lista_conversaciones

namespace Chat_Darwin
{
    public partial class Lista_Conversaciones : Form
    {
        MyDataBase myDB = new MyDataBase();
        List<Usuario> lista_Usuario = new List<Usuario>();
        Usuario usu1 = new Usuario();
        List<Conversacion> lista_Conversacion = new List<Conversacion>();
        Conversacion conver1 = new Conversacion();
        //List<Mensaje> lista_Mensaje = new List<Mensaje>();

        public Lista_Conversaciones()
        {
            InitializeComponent();
        }

        public Lista_Conversaciones(List<Usuario> i_lista_Usuario, List<Conversacion> i_lista_Conversacion, Usuario i_usu1, Conversacion i_conver1)
        {
            conver1 = i_conver1;
            usu1 = i_usu1;
            lista_Conversacion = i_lista_Conversacion;
            lista_Usuario = i_lista_Usuario;
            InitializeComponent();
        }

        private void Lista_Conversaciones_Load(object sender, EventArgs e)
        {
            this.tema_Actual();
            lbl_Nombre.Text = usu1.nombre;
        }

        public void tema_Actual()
        {
            lst_Tema.Items.Clear();

            var temas_Conversacion = from t_conversacion in this.myDB.conversaciones
                                     select new
                                     {
                                         id = (int)t_conversacion.id_Conversacion,
                                         temas = (String)t_conversacion.tema_conversacion
                                     };
            foreach (var c in temas_Conversacion)
            {
                lst_Tema.Items.Add(c.temas);
            }
        }

        private void btn_Actualizar_Click(object sender, EventArgs e)
        {
            this.tema_Actual();
        }

        private void btn_Tema_Click(object sender, EventArgs e)
        {
            Usuario u = new Usuario();
            Conversacion c = new Conversacion();
            c.tema_conversacion = txt_Tema.Text;
            foreach (Usuario usu in lista_Usuario)
            {
                c.id_Conversacion = usu.id_User;
            }
            lista_Conversacion.Add(c);

            myDB.conversaciones.InsertOnSubmit(c);
            myDB.SubmitChanges();
            this.tema_Actual();
        }

        private void btn_Ir_Click(object sender, EventArgs e)
        {
            String seleccion_Tema = (String)lst_Tema.SelectedItem.ToString();

            var item_Selecccionado = from tema in this.myDB.conversaciones
                                     where tema.tema_conversacion == seleccion_Tema && tema.id_Conversacion>0
                                     select new
                                     {
                                         id_Conver = (int)tema.id_Conversacion,
                                         tema_Conver = (String)tema.tema_conversacion
                                     };

            foreach (var c in item_Selecccionado)
            {
                if (c.tema_Conver == seleccion_Tema)
                {
                    //Usuario usu = new Usuario();
                    usu1.id_User = usu1.id_User;
                    usu1.nombre = usu1.nombre;
                    lista_Usuario.Add(usu1);

                    conver1.id_Conversacion = c.id_Conver;
                    conver1.tema_conversacion = c.tema_Conver;
                    lista_Conversacion.Add(conver1);

                    //this.Hide();
                    Chat ch = new Chat(lista_Usuario, lista_Conversacion, usu1, conver1);
                    ch.Show();
                }
            }
        }

        private void lst_Tema_SelectedIndexChanged(object sender, EventArgs e)
        {
            
            //txt_Tema.Text = seleccion_Tema;
        }
    }
}

//*********************************************************************
//Formulario Chat**************************************************
namespace Chat_Darwin
{
    public partial class Chat : Form
    {
        MyDataBase myDB = new MyDataBase();
        List<Usuario> lista_Usuario = new List<Usuario>();
        Usuario usu1 = new Usuario();
        List<Conversacion> lista_Conversacion = new List<Conversacion>();
        Conversacion conver1 = new Conversacion();
        //List<Mensaje> lista_Mensaje = new List<Mensaje>();

        public Chat()
        {
            InitializeComponent();
        }

        public Chat(List<Usuario> i_lista_Usuario, List<Conversacion> i_lista_Conversacion, Usuario i_usu1, Conversacion i_conver1)
        {
            conver1 = i_conver1;
            usu1 = i_usu1;
            lista_Usuario = i_lista_Usuario;
            lista_Conversacion = i_lista_Conversacion;
            InitializeComponent();
        }


        private void Chat_Load(object sender, EventArgs e)
        {
            this.mensajes_Actual();
            lbl_Tema.Text = "TEMA: "+conver1.tema_conversacion;
            lbl_User.Text = "NOMBRE: "+usu1.nombre;
        }

        public void mensajes_Actual()
        {
            //llamar al id de la conversacion y del usuario para  llamar al mensaje
            Conversacion c = new Conversacion();


            lst_Chat.Items.Clear();

            var iter_Mensajes = from temaMensaje in this.myDB.mensajes
                                //where temaMensaje.conversacion_Id==Convert.ToInt32(lbl_Tema.Text) && temaMensaje.user_Id==Convert.ToInt32(lbl_User.Text)
                                where temaMensaje.id_Mensaje == conver1.id_Conversacion && temaMensaje.id_Mensaje==usu1.id_User
                                select new
                                {
                                    id_Mensaje = (int)temaMensaje.id_Mensaje,
                                    mensaje = (String)temaMensaje.texto
                                    //id_user = (int)temaMensaje.user_Id,
                                    //id_conver = (int)temaMensaje.conversacion_Id
                                };
            foreach(var t in iter_Mensajes)
            {
                lst_Chat.Items.Add(t.id_Mensaje+". "+t.mensaje);
            }
        }
        private void btn_Actualizar_Click(object sender, EventArgs e)
        {
            this.mensajes_Actual();
        }

        private void btn_Ok_Click(object sender, EventArgs e)
        {
            this.mensajes_Actual();
            Mensaje m = new Mensaje();
            m.texto = txt_Chat.Text;
            m.user_Id = usu1.id_User;
            m.conversacion_Id = conver1.id_Conversacion;
            myDB.mensajes.InsertOnSubmit(m);
            myDB.SubmitChanges();
        }
    }
}