static void Main(string[] args) { /* * En este codigo no nos interesa separar capas, solo testear el funcionamiento de la base de datos y de los diferentes servicios * Podemos usar metodos directamente de DbContext o podemos usar las clases que encapsulan EF */ // https://www.connectionstrings.com/sql-server-compact/ // // OMBContext ctx = new OMBContext(@"Data source=F:\CURSO_2016_01\master\OMB\db\OMB.sdf;Persist Security Info=False;"); OMBContext ctx = OMBContext.DB; AppDomain.CurrentDomain.UnhandledException += (o, e) => { ctx.Dispose(); Console.WriteLine("Excepcion"); }; if (ctx.Database.Exists()) { Console.WriteLine("La base esta!"); } #if PASO_1 // PASO 1 - Crear root categoty (Libros) // Categoria root = new Categoria() { Nombre = "Libros" }; ctx.Categorias.Add(root); ctx.SaveChanges(); #endif #if PASO_2 // PASO 2 - Crear categoria hijas (Informatica) [primero obtengo la root y luego creo las child] // Categoria root = (from cat in ctx.Categorias where cat.Nombre == "Libros" select cat).FirstOrDefault(); Categoria newCat = new Categoria() { Nombre = "Informatica", Parent = root }; ctx.Categorias.Add(newCat); root?.SubCategorias.Add(newCat); newCat = new Categoria() { Nombre = "Ficcion", Parent = root }; ctx.Categorias.Add(newCat); root?.SubCategorias.Add(newCat); newCat = new Categoria() { Nombre = "No Ficcion", Parent = root }; ctx.Categorias.Add(newCat); root?.SubCategorias.Add(newCat); newCat = new Categoria() { Nombre = "Autoayuda", Parent = root }; ctx.Categorias.Add(newCat); root?.SubCategorias.Add(newCat); newCat = new Categoria() { Nombre = "Viajes", Parent = root }; ctx.Categorias.Add(newCat); root?.SubCategorias.Add(newCat); ctx.SaveChanges(); #endif #if PASO_2_5 // PASO 2 y MEDIO - Crear categorias hijas de una subcategoria... // Categoria @base = (from cat in ctx.Categorias where cat.Nombre == "Informatica" select cat).FirstOrDefault(); // Categoria newCat = new Categoria() { Nombre = "Informatica", Parent = root }; // Categoria newCat = new Categoria() { Nombre = "Ficcion", Parent = root }; Categoria newCat = new Categoria() { Nombre = "Programacion", Parent = @base }; ctx.Categorias.Add(newCat); @base?.SubCategorias.Add(newCat); newCat = new Categoria() { Nombre = "Sistemas Operativos", Parent = @base }; ctx.Categorias.Add(newCat); @base?.SubCategorias.Add(newCat); newCat = new Categoria() { Nombre = "Networking", Parent = @base }; ctx.Categorias.Add(newCat); @base?.SubCategorias.Add(newCat); ctx.SaveChanges(); #endif #if PASO_3 // PASO 3 - Chequear relaciones!! FULL // Categoria root = (from cat in ctx.Categorias.Include("SubCategorias") where cat.Nombre == "Libros" select cat).FirstOrDefault(); // 1 //Categoria categoria = (from cat in ctx.Categorias where cat.Nombre == "Libros" select cat).FirstOrDefault(); Categoria categoria = (from cat in ctx.Categorias where cat.Nombre == "Informatica" select cat).FirstOrDefault(); // 2 Console.WriteLine($"{categoria.IDCategoria} {categoria.Nombre} {categoria.SubCategorias.Count}"); Console.WriteLine("SUB-CATEGORIAS"); foreach (Categoria cat in categoria.SubCategorias) { // 3 Console.WriteLine($"{cat.IDCategoria} {cat.Nombre} {cat.SubCategorias.Count}"); } Console.WriteLine("PARENT CATEGORIA"); if (categoria.Parent == null) { // 4 Console.WriteLine($"{categoria.Nombre} es ROOT"); } else { Console.WriteLine($"La categoria parent de {categoria.Nombre} es {categoria.Parent.Nombre}"); } #endif #if PASO_4 // PASO 4 - Ingreso de los Tipos de Documentos // TipoDocumento tipo = new TipoDocumento() { Descripcion = "DNI" }; ctx.TiposDeDocumento.Add(tipo); tipo = new TipoDocumento() { Descripcion = "Pasaporte", Observaciones = "" }; ctx.TiposDeDocumento.Add(tipo); tipo = new TipoDocumento() { Descripcion = "LE", Observaciones = "Libreta de Enrolamiento - Solo para hombre nacidos antes del 1960" }; ctx.TiposDeDocumento.Add(tipo); tipo = new TipoDocumento() { Descripcion = "LC", Observaciones = "Libreta Civica - Solo para mujeres nacidas antes de 1955" }; ctx.TiposDeDocumento.Add(tipo); tipo = new TipoDocumento() { Descripcion = "Documento Pendiente de Ingreso", Observaciones = "Averiguar cuanto antes el tipo y numero de documento!!" }; ctx.TiposDeDocumento.Add(tipo); ctx.SaveChanges(); #endif #if PASO_4_5 // PASO 4_5 - testeamos algunas provincias y localidades... var localidades = ctx.Localidades.Where(loc => loc.Nombre.Contains("martin")); Console.WriteLine("TODAS LAS LOCALIDADES QUE CONTIENEN <<MARTIN>> EN SU NOMBRE\n\n"); foreach (Localidad city in localidades) { Console.WriteLine($"Nombre Localidad: {city.Nombre} ; Provincia: {city.Provincia.Nombre}"); } Console.WriteLine($"Hay {localidades.Count()} localidades cuyo nombre contiene <<MARTIN>>"); Console.WriteLine("\nPress any key para listar ciudades de FORMOSA"); Console.ReadLine(); // observar que hasta aca no necesito tener Provincias como DbSet... Provincia formosa = ctx.Provincias.Where(prov => prov.Nombre == "formosa").FirstOrDefault(); foreach (var city in formosa.Localidades) { Console.WriteLine($"Nombre Localidad: {city.Nombre} ; Provincia: {city.Provincia.Nombre}"); } Console.WriteLine($"Hay {formosa.Localidades.Count} localidades en esta provincia"); #endif #if PASO_4_5_1 // // Crear nueva Provincia y nueva Localidad // esto normalmente no se haria, pero vemos si funciona (despues borrar desde la DB) Localidad nuevaLocalidad = new Localidad() { Nombre = "Plumas Verdes" }; Provincia nuevaProvincia = new Provincia() { IDProvincia = "1", Nombre = "Alaska" }; // primero podemos probar ingresar una localidad sin provincia ctx.Localidades.Add(nuevaLocalidad); try { ctx.SaveChanges(); throw new ApplicationException("Deberia haber fallado el UPDATE!!!"); } catch (DbUpdateException ex) { Console.WriteLine("Se genero UpdateException!! Todo funciona OK"); Console.WriteLine(ex.Message); } nuevaLocalidad.Provincia = nuevaProvincia; ctx.SaveChanges(); #endif #if PASO_5 // PASO 5 - Ingreso de algunas personas // Persona newPersona; Localidad rosario, perez; rosario = ctx.Localidades.Where(loc => loc.Nombre == "Rosario" && loc.Provincia.Nombre == "Santa Fe").FirstOrDefault(); perez = ctx.Localidades.Where(loc => loc.Nombre == "Perez" && loc.Provincia.Nombre == "Santa Fe").FirstOrDefault(); newPersona = new Persona() { Nombres = "Martin", Apellidos = "Vidal", Localidad = rosario, Sexo = Sexo.Masculino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Gonzalo", Apellidos = "López", Localidad = rosario, Sexo = Sexo.Masculino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Ruben", Apellidos = "Acevedo", Localidad = rosario, Sexo = Sexo.Masculino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Enrique", Apellidos = "Thedy", Localidad = rosario, Domicilio = "Mitre 509 Piso 5 Departamento 4", CodigoPostal = "S2000COK", Documento = "18339577", TipoDocumento = ctx.TiposDeDocumento.FirstOrDefault(td => td.Descripcion == "DNI"), Sexo = Sexo.Masculino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Ana Laura", Apellidos = "Cardoso", Localidad = rosario, Sexo = Sexo.Femenino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Maria Elisa", Apellidos = "Tron", Localidad = rosario, Sexo = Sexo.Femenino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Valeria Claudia", Apellidos = "Guglielmetti", Localidad = rosario, Sexo = Sexo.Femenino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Guillermo", Apellidos = "Quintana", Localidad = rosario, Sexo = Sexo.Masculino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Irene Leonor", Apellidos = "Acosta", Localidad = perez, Sexo = Sexo.Femenino }; ctx.Personas.Add(newPersona); // newPersona = new Persona() { Nombres = "", Apellidos = "", Localidad = rosario }; ctx.SaveChanges(); #endif #if PASO_5_5 // Modificar propiedades de alguna persona Persona persona = ctx.Personas.Where(per => per.Apellidos == "Thedy").First(); persona.AmpliacionDomicilio = "Es el edificio de la esquina"; if (ctx.ChangeTracker.HasChanges()) { Console.WriteLine("Guardando info de contacto"); ctx.MostrarCambios(); Console.ReadLine(); ctx.SaveChanges(); } else { Console.WriteLine("No se detectaron cambios"); } #endif #if PASO_6 // Agregamos info de contacto // // TODO Traer una Persona desde la base de datos Persona persona = ctx.Personas.Where(per => per.Apellidos == "Thedy").FirstOrDefault(); List <TipoContacto> tipos = ctx.TiposContacto.ToList(); if (persona != null) { Console.WriteLine($"Agregar contactos para {persona.Nombres} {persona.Apellidos}"); while (true) { Console.WriteLine("(A)gregar nuevo contacto? o (S)alir?"); if (Console.ReadKey(true).Key == ConsoleKey.A) { // mostrar la lista de posibles contactos Console.WriteLine("Esta es la lista de posibles tipos de contacto\nElegir un # de tipo y luego ingresarlo"); for (int idx = 1; idx <= tipos.Count; idx++) { Console.WriteLine($"{idx} ----- {tipos[idx-1].Descripcion}"); } string opcion = Console.ReadLine(); int numOpcion; if (Int32.TryParse(opcion, out numOpcion) && numOpcion >= 1 && numOpcion <= tipos.Count) { Console.WriteLine("Ahora ingrese el dato del contacto"); string dato = Console.ReadLine(); Console.WriteLine("Por ultimo un comentario (o Enter si no desea comentario)"); string comentario = Console.ReadLine(); // TODO Agregar el nuevo contacto a la Persona Contacto nuevoContacto = new Contacto(); nuevoContacto.Dato = dato; nuevoContacto.Comentario = string.IsNullOrWhiteSpace(comentario) ? null : comentario; nuevoContacto.Tipo = tipos[numOpcion]; persona.InfoContacto.Add(nuevoContacto); } else { Console.WriteLine($"Opcion no valida, debe estar entre 1 y {tipos.Count}"); } } else { break; } } if (ctx.ChangeTracker.HasChanges()) { Console.WriteLine("Guardando info de contacto"); ctx.MostrarCambios(); Console.ReadLine(); ctx.SaveChanges(); } else { Console.WriteLine("No se detectaron cambios"); } } else { Console.WriteLine("Esta persona no existe"); } #endif #if PASO_7 // Agregamos Empleado asociado a Persona // Persona persona = ctx.Personas.FirstOrDefault(per => per.Apellidos == "Thedy"); if (persona != null) { Empleado nuevo = new Empleado(); nuevo.Persona = persona; nuevo.Legajo = "167055"; nuevo.CUIT = "20-18339577-8"; nuevo.FechaIngreso = new DateTime(1986, 12, 9); ctx.Empleados.Add(nuevo); ctx.SaveChanges(); } #endif #if PASO_8 // Creamos un usuario y utilizamos el servicio para crearlo con su password // Empleado empleado = ctx.Empleados.FirstOrDefault(emp => emp.Legajo == "167055"); Usuario user = new Usuario(); SecurityServices seg = new SecurityServices(); user.Login = "******"; user.Empleado = empleado; user.Blocked = false; if (seg.CrearUsuario(user, "12345678")) { Console.WriteLine("Usuario creado correctamente"); } else { Console.WriteLine("Error al crear el usuario"); } #endif #if PASO_9 // TODO agregar codigo para ingresar con el ID y password que asignamos a nuestro usuario // SecurityServices seg = new SecurityServices(); // Probamos login incorrecto...por usuario inexistente // Usuario usrlogin = seg.LoginUsuario("pirulo", "12345678"); if (usrlogin == null) { Console.WriteLine(seg.ErrorInfo); } else { Console.WriteLine("NO PUEDE SER!!!"); } // Probamos login incorrecto...por password incorrecta ==> esto tiene que modificar la tabla (last login BAD)) // usrlogin = seg.LoginUsuario("ethedy", "1234567890"); if (usrlogin == null) { Console.WriteLine(seg.ErrorInfo); } else { Console.WriteLine("NO PUEDE SER!!!"); } // Probamos login incorrecto...por password incorrecta ==> esto tiene que modificar la tabla (last login OK) // usrlogin = seg.LoginUsuario("ethedy", "12345678"); if (usrlogin != null) { Console.WriteLine($"Usuario {usrlogin.Empleado.Persona.Nombres} {usrlogin.Empleado.Persona.Apellidos} conectado!!"); } else { Console.WriteLine("NO PUEDE SER!!!"); } #endif #if PASO_12 // Agregamos codigo para incorporar editoriales y algunos libros // string pathPortadas = @"F:\CURSO_2016_01\src\OMB\imagenes\portadas"; // string pathPortadas = @"F:\CURSO_2016_01\src\OMB\imagenes\portadas"; string[] editoriales = { // "Addison-Wesley Professional", "The MIT Press", "O'Reilly Media", "No Starch Press", "Apress", "Microsoft Press", "Wrox", "McGraw-Hill Education", "Wiley" }; Editorial editorial; // ProductServices prods = new ProductServices(); foreach (string item in editoriales) { editorial = new Editorial() { Nombre = item }; ctx.Editoriales.Add(editorial); } ctx.SaveChanges(); /* * Libro nuevo = prods.NuevoLibro(editorial, * "The C++ Standard Library: A Tutorial and Reference", "9780321623218", * Path.Combine(pathPortadas, "The C++ Standard Library A Tutorial and Reference.jpg"), * new DateTime(2012, 4, 9), 1128); * * if (nuevo != null) * Console.WriteLine($"Libro agregado correctamente con ID = {nuevo.IDLibro}"); * */ #endif #if PASO_13 // Agregamos codigo para incorporar editoriales y algunos libros // string pathPortadas = @"F:\CURSO_2016_01\src\OMB\imagenes\portadas"; string pathPortadas = @"D:\DESARROLLO\OMB_2016\OMB\imagenes\portadas"; ProductServices prods = new ProductServices(); Libro nuevo; nuevo = prods.NuevoLibro( ctx.Editoriales.FirstOrDefault(ed => ed.Nombre.Contains("Wesley")), "The C++ Standard Library: A Tutorial and Reference", "9780321623218", "0321623215", Path.Combine(pathPortadas, "The C++ Standard Library A Tutorial and Reference.jpg"), new DateTime(2012, 4, 9), 1128); if (nuevo != null) { Console.WriteLine("Libro agregado correctamente con ID = {0}", nuevo.IDLibro); } nuevo = prods.NuevoLibro( ctx.Editoriales.FirstOrDefault(ed => ed.Nombre.Contains("MIT Press")), "Introduction to Algorithms", "9780262033848", "0262033844", Path.Combine(pathPortadas, "Introduction to Algorithms.jpg"), new DateTime(2009, 7, 31), 1312); if (nuevo != null) { Console.WriteLine("Libro agregado correctamente con ID = {0}", nuevo.IDLibro); } nuevo = prods.NuevoLibro( ctx.Editoriales.FirstOrDefault(ed => ed.Nombre.Contains("Reilly")), "Algorithms in a Nutshell: A Practical Guide", "9781491948927", "1491948922", Path.Combine(pathPortadas, "Algorithms in a Nutshell A Practical Guide.jpg"), new DateTime(2016, 4, 2), 390); if (nuevo != null) { Console.WriteLine("Libro agregado correctamente con ID = {0}", nuevo.IDLibro); } nuevo = prods.NuevoLibro( ctx.Editoriales.FirstOrDefault(ed => ed.Nombre.Contains("Reilly")), "The Hitchhiker's Guide to Python: Best Practices for Development", "9781491933176", "1491933178", Path.Combine(pathPortadas, "The Hitchhiker's Guide to Python Best Practices for Development.jpg"), new DateTime(2016, 9, 18), 338); if (nuevo != null) { Console.WriteLine("Libro agregado correctamente con ID = {0}", nuevo.IDLibro); } nuevo = prods.NuevoLibro( ctx.Editoriales.FirstOrDefault(ed => ed.Nombre.Contains("Reilly")), "Understanding the Linux Kernel", "9780596005658", "0596005652", Path.Combine(pathPortadas, "Understanding the Linux Kernel.jpg"), new DateTime(2005, 11, 1), 944); if (nuevo != null) { Console.WriteLine("Libro agregado correctamente con ID = {0}", nuevo.IDLibro); } nuevo = prods.NuevoLibro( ctx.Editoriales.FirstOrDefault(ed => ed.Nombre.Contains("Addison-Wesley")), "Unix Network Programming, Volume 1: The Sockets Networking API", "9780131411555", "0131411551", Path.Combine(pathPortadas, "Unix Network Programming, Volume 1 The Sockets Networking API.jpg"), new DateTime(2003, 11, 24), 1024); if (nuevo != null) { Console.WriteLine("Libro agregado correctamente con ID = {0}", nuevo.IDLibro); } #endif /* * Categoria newCat = new Categoria() {Nombre = "Informatica", Parent = parent}; * * ctx.Categorias.Add(newCat); * * parent.SubCategorias.Add(newCat); * ctx.SaveChanges(); * * * // ctx.Categorias.Load(); * * var showCat = ctx.Categorias.FirstOrDefault(); * * //.Where(categ => categ.Nombre == "Libros").First(); * * Console.WriteLine(showCat?.CategoriaID.ToString()); */ Console.WriteLine("Press Any Key To Continue..."); Console.ReadLine(); ctx.Dispose(); }
static void Main(string[] args) { /* * En este codigo no nos interesa separar capas, solo testear el funcionamiento de la base de datos y de los diferentes servicios * Podemos usar metodos directamente de DbContext o podemos usar las clases que encapsulan EF */ // https://www.connectionstrings.com/sql-server-compact/ // // OMBContext ctx = new OMBContext(@"Data source=F:\CURSO_2016_01\master\OMB\db\OMB.sdf;Persist Security Info=False;"); OMBContext ctx = OMBContext.DB; AppDomain.CurrentDomain.UnhandledException += (o, e) => { ctx.Dispose(); Console.WriteLine("Excepcion"); }; if (ctx.Database.Exists()) { Console.WriteLine("La base esta!"); } #if PASO1 // PASO 1 - Crear root categoty (Libros) // Categoria root = new Categoria() { Nombre = "Libros" }; ctx.Categorias.Add(root); ctx.SaveChanges(); #endif #if PASO2 // PASO 2 - Crear categoria hijas (Informatica) [primero obtengo la root y luego creo las child] // Categoria root = (from cat in ctx.Categorias where cat.Nombre == "Libros" select cat).FirstOrDefault(); Categoria newCat = new Categoria() { Nombre = "Informatica", Parent = root }; ctx.Categorias.Add(newCat); root?.SubCategorias.Add(newCat); newCat = new Categoria() { Nombre = "Ficcion", Parent = root }; ctx.Categorias.Add(newCat); root?.SubCategorias.Add(newCat); newCat = new Categoria() { Nombre = "No Ficcion", Parent = root }; ctx.Categorias.Add(newCat); root?.SubCategorias.Add(newCat); newCat = new Categoria() { Nombre = "Autoayuda", Parent = root }; ctx.Categorias.Add(newCat); root?.SubCategorias.Add(newCat); newCat = new Categoria() { Nombre = "Viajes", Parent = root }; ctx.Categorias.Add(newCat); root?.SubCategorias.Add(newCat); ctx.SaveChanges(); #endif #if PASO2_5 // PASO 2 y MEDIO - Crear categorias hijas de una subcategoria... // Categoria @base = (from cat in ctx.Categorias where cat.Nombre == "Informatica" select cat).FirstOrDefault(); // Categoria newCat = new Categoria() { Nombre = "Informatica", Parent = root }; // Categoria newCat = new Categoria() { Nombre = "Ficcion", Parent = root }; Categoria newCat = new Categoria() { Nombre = "Programacion", Parent = @base }; ctx.Categorias.Add(newCat); @base?.SubCategorias.Add(newCat); newCat = new Categoria() { Nombre = "Sistemas Operativos", Parent = @base }; ctx.Categorias.Add(newCat); @base?.SubCategorias.Add(newCat); newCat = new Categoria() { Nombre = "Networking", Parent = @base }; ctx.Categorias.Add(newCat); @base?.SubCategorias.Add(newCat); ctx.SaveChanges(); #endif #if PASO3 // PASO 3 - Chequear relaciones!! FULL // Categoria root = (from cat in ctx.Categorias.Include("SubCategorias") where cat.Nombre == "Libros" select cat).FirstOrDefault(); // 1 //Categoria categoria = (from cat in ctx.Categorias where cat.Nombre == "Libros" select cat).FirstOrDefault(); Categoria categoria = (from cat in ctx.Categorias where cat.Nombre == "Informatica" select cat).FirstOrDefault(); // 2 Console.WriteLine($"{categoria.IDCategoria} {categoria.Nombre} {categoria.SubCategorias.Count}"); Console.WriteLine("SUB-CATEGORIAS"); foreach (Categoria cat in categoria.SubCategorias) { // 3 Console.WriteLine($"{cat.IDCategoria} {cat.Nombre} {cat.SubCategorias.Count}"); } Console.WriteLine("PARENT CATEGORIA"); if (categoria.Parent == null) { // 4 Console.WriteLine($"{categoria.Nombre} es ROOT"); } else { Console.WriteLine($"La categoria parent de {categoria.Nombre} es {categoria.Parent.Nombre}"); } #endif #if PASO4 // PASO 4 - Ingreso de los Tipos de Documentos // TipoDocumento tipo = new TipoDocumento() { Descripcion = "DNI" }; ctx.TiposDeDocumento.Add(tipo); tipo = new TipoDocumento() { Descripcion = "Pasaporte", Observaciones = "" }; ctx.TiposDeDocumento.Add(tipo); tipo = new TipoDocumento() { Descripcion = "LE", Observaciones = "Libreta de Enrolamiento - Solo para hombre nacidos antes del 1960" }; ctx.TiposDeDocumento.Add(tipo); tipo = new TipoDocumento() { Descripcion = "LC", Observaciones = "Libreta Civica - Solo para mujeres nacidas antes de 1955" }; ctx.TiposDeDocumento.Add(tipo); tipo = new TipoDocumento() { Descripcion = "Documento Pendiente de Ingreso", Observaciones = "Averiguar cuanto antes el tipo y numero de documento!!" }; ctx.TiposDeDocumento.Add(tipo); ctx.SaveChanges(); #endif #if PASO4_5 // PASO 4_5 - testeamos algunas provincias y localidades... var localidades = ctx.Localidades.Where(loc => loc.Nombre.Contains("martin")); Console.WriteLine("TODAS LAS LOCALIDADES QUE CONTIENEN <<MARTIN>> EN SU NOMBRE\n\n"); foreach (Localidad city in localidades) { Console.WriteLine($"Nombre Localidad: {city.Nombre} ; Provincia: {city.Provincia.Nombre}"); } Console.WriteLine($"Hay {localidades.Count()} localidades cuyo nombre contiene <<MARTIN>>"); Console.WriteLine("\nPress any key para listar ciudades de FORMOSA"); Console.ReadLine(); // observar que hasta aca no necesito tener Provincias como DbSet... Provincia formosa = ctx.Provincias.Where(prov => prov.Nombre == "formosa").FirstOrDefault(); foreach (var city in formosa.Localidades) { Console.WriteLine($"Nombre Localidad: {city.Nombre} ; Provincia: {city.Provincia.Nombre}"); } Console.WriteLine($"Hay {formosa.Localidades.Count} localidades en esta provincia"); #endif #if PASO4_5_1 // // Crear nueva Provincia y nueva Localidad // esto normalmente no se haria, pero vemos si funciona (despues borrar desde la DB) Localidad nuevaLocalidad = new Localidad() { Nombre = "Plumas Verdes" }; Provincia nuevaProvincia = new Provincia() { IDProvincia = "1", Nombre = "Alaska" }; // primero podemos probar ingresar una localidad sin provincia ctx.Localidades.Add(nuevaLocalidad); try { ctx.SaveChanges(); throw new ApplicationException("Deberia haber fallado el UPDATE!!!"); } catch (DbUpdateException ex) { Console.WriteLine("Se genero UpdateException!! Todo funciona OK"); Console.WriteLine(ex.Message); } nuevaLocalidad.Provincia = nuevaProvincia; ctx.SaveChanges(); #endif #if PASO5 // PASO 5 - Ingreso de algunas personas // Persona newPersona; Localidad rosario, perez; rosario = ctx.Localidades.Where(loc => loc.Nombre == "Rosario" && loc.Provincia.Nombre == "Santa Fe").FirstOrDefault(); perez = ctx.Localidades.Where(loc => loc.Nombre == "Perez" && loc.Provincia.Nombre == "Santa Fe").FirstOrDefault(); newPersona = new Persona() { Nombres = "Martin", Apellidos = "Vidal", Localidad = rosario, Sexo = Sexo.Masculino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Gonzalo", Apellidos = "López", Localidad = rosario, Sexo = Sexo.Masculino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Ruben", Apellidos = "Acevedo", Localidad = rosario, Sexo = Sexo.Masculino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Enrique", Apellidos = "Thedy", Localidad = rosario, Domicilio = "Mitre 509 Piso 5 Departamento 4", CodigoPostal = "S2000COK", Documento = "18339577", TipoDocumento = ctx.TiposDeDocumento.FirstOrDefault(td => td.Descripcion == "DNI"), Sexo = Sexo.Masculino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Ana Laura", Apellidos = "Cardoso", Localidad = rosario, Sexo = Sexo.Femenino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Maria Elisa", Apellidos = "Tron", Localidad = rosario, Sexo = Sexo.Femenino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Valeria Claudia", Apellidos = "Guglielmetti", Localidad = rosario, Sexo = Sexo.Femenino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Guillermo", Apellidos = "Quintana", Localidad = rosario, Sexo = Sexo.Masculino }; ctx.Personas.Add(newPersona); newPersona = new Persona() { Nombres = "Irene Leonor", Apellidos = "Acosta", Localidad = perez, Sexo = Sexo.Femenino }; ctx.Personas.Add(newPersona); // newPersona = new Persona() { Nombres = "", Apellidos = "", Localidad = rosario }; ctx.SaveChanges(); #endif #if PASO6 // Agregamos info de contacto // Persona persona = null; // TODO Traer una Persona desde la base de datos List <TipoContacto> tipos = ctx.TiposContacto.ToList(); if (persona != null) { Console.WriteLine($"Agregar contactos para {persona.Nombres} {persona.Apellidos}"); while (true) { Console.WriteLine("(A)gregar nuevo contacto? o (S)alir?"); if (Console.ReadKey(true).Key == ConsoleKey.A) { // mostrar la lista de posibles contactos Console.WriteLine("Esta es la lista de posibles tipos de contacto\nElegir un # de tipo y luego ingresarlo"); for (int idx = 1; idx <= tipos.Count; idx++) { Console.WriteLine($"{idx} ----- {tipos[idx-1].Descripcion}"); } string opcion = Console.ReadLine(); int numOpcion; if (Int32.TryParse(opcion, out numOpcion) && numOpcion >= 1 && numOpcion <= tipos.Count) { Console.WriteLine("Ahora ingrese el dato del contacto"); string dato = Console.ReadLine(); Console.WriteLine("Por ultimo un comentario (o Enter si no desea comentario)"); string comentario = Console.ReadLine(); // TODO Agregar el nuevo contacto a la Persona } else { Console.WriteLine($"Opcion no valida, debe estar entre 1 y {tipos.Count}"); } } else { break; } } if (ctx.ChangeTracker.HasChanges()) { Console.WriteLine("Guardando info de contacto"); // ctx.MostrarCambios(); // Console.ReadLine(); ctx.SaveChanges(); } else { Console.WriteLine("No se detectaron cambios"); } } else { Console.WriteLine("Esta persona no existe"); } #endif #if PASO7 // Agregamos Empleado asociado a Persona // Persona persona = ctx.Personas.FirstOrDefault(per => per.Apellidos == "Thedy"); if (persona != null) { Empleado nuevo = new Empleado(); nuevo.Persona = persona; nuevo.Legajo = "167055"; nuevo.CUIT = "20-18339577-8"; nuevo.FechaIngreso = new DateTime(1986, 12, 9); ctx.Empleados.Add(nuevo); ctx.SaveChanges(); } #endif #if PASO8 // Creamos un usuario y utilizamos el servicio para crearlo con su password // Empleado empleado = ctx.Empleados.FirstOrDefault(emp => emp.Legajo == "167055"); Usuario user = new Usuario(); SecurityServices seg = new SecurityServices(); user.Login = "******"; user.Empleado = empleado; user.Blocked = false; if (seg.ValidarUsuario(user)) { if (seg.CrearUsuario(user, "12345678")) { Console.WriteLine("Usuario creado correctamente"); } else { Console.WriteLine("Error al crear el usuario"); } } else { Console.WriteLine("Fallo la validacion del usuario"); } #endif /* * Categoria newCat = new Categoria() {Nombre = "Informatica", Parent = parent}; * * ctx.Categorias.Add(newCat); * * parent.SubCategorias.Add(newCat); * ctx.SaveChanges(); * * * // ctx.Categorias.Load(); * * var showCat = ctx.Categorias.FirstOrDefault(); * * //.Where(categ => categ.Nombre == "Libros").First(); * * Console.WriteLine(showCat?.CategoriaID.ToString()); */ Console.ReadLine(); ctx.Dispose(); }
static void Main(string[] args) { #if NO_DB ServiciosSeguridad seg = new ServiciosSeguridad(new NullMessenger()); Usuario user; // intentamos el login de un usuario y/o password inexistentes user = seg.Login("pirulo", "1234"); if (user == null) { Console.WriteLine(seg.Status()); } else { Console.WriteLine("Usuario/password correctas"); } // luego de un usuario y password correctos user = seg.Login("sara", "1234"); if (user == null) { Console.WriteLine(seg.Status()); } else { Console.WriteLine("Usuario/password correctas"); } // intentamos recuperar una contraseña seg.RecuperarPassword("sara", "*****@*****.**"); // PROBAR QUE LA CONTRASELÑA CAMBIO #else OMBContext ctx = OMBContext.DB; AppDomain.CurrentDomain.UnhandledException += (o, e) => { ctx.Dispose(); Console.WriteLine("Excepcion"); }; if (ctx.Database.Exists()) { Console.WriteLine("La base esta!"); } #endif #if PASO_5 // PASO 5 - Ingreso de algunas personas // Persona newPersona; Localidad rosario, perez; rosario = ctx.Localidades.Where(loc => loc.Nombre == "Rosario" && loc.Provincia.Nombre == "Santa Fe").FirstOrDefault(); perez = ctx.Localidades.Where(loc => loc.Nombre == "Perez" && loc.Provincia.Nombre == "Santa Fe").FirstOrDefault(); newPersona = new Persona() { Nombre = "Enrique Thedy", Localidad = rosario, Domicilio = "Mitre 509 Piso 5 Departamento 4", CodigoPostal = "S2000COK", Documento = "18339577", TipoDocumento = ctx.TiposDeDocumento.FirstOrDefault(td => td.Descripcion == "DNI"), Nacimiento = new DateTime(1967, 4, 10), Sexo = Sexo.Masculino }; ctx.Personas.Add(newPersona); // newPersona = new Persona() { Nombres = "", Apellidos = "", Localidad = rosario }; ctx.SaveChanges(); #endif Console.ReadLine(); }