public static Cliente GenerarDatosCliente() { try { ClienteLinea clienteLinea = new ClienteLinea() { ContactoCorreo = "*****@*****.**", ContactoNombre = "nombreCOntacto", ContactoTelefono = "154564861", Direccion = "calle 2 n2 -2", Nombre = "NombrePrueba", GuidUsuarioCrea = Guid.Parse("00000000-0000-0000-0000-000000000000"), GuidOrganizacion = Guid.Parse("00000000-0000-0000-0000-000000000000"), NombreUsuarioCrea = "Admin" }; List <ClienteLinea> ClientesLienas = new List <ClienteLinea>(); ClientesLienas.Add(clienteLinea); Cliente cli = new Cliente() { ContactoCorreo = "*****@*****.**", ContactoNombre = "PruebaTest", ContactoTelefono = "9638527410", Direccion = "calle 1 n 1 -1 ", EstadoId = 1, NickName = "NickPrueba", Nit = "147852369", NombreResponsable = "responPrueba", RazonSocial = "RazonPRueba", Telefono = "8529637410", GuidUsuarioCrea = Guid.Parse("00000000-0000-0000-0000-000000000000"), GuidOrganizacion = Guid.Parse("00000000-0000-0000-0000-000000000000"), NombreUsuarioCrea = "Admin", Lineas = ClientesLienas }; return(cli); } catch (Exception) { throw; } }
public async Task <bool> ActualizarCliente(Cliente cliente, UsuarioDTO usuario) { try { var existeCliente = _context.Cliente.Where(d => d.Nit == cliente.Nit).Count(); if (existeCliente > 1) { throw new Exception("Ya hay un cliente registrado con este Nit"); } var clienteBD = await _context.Cliente .Include(c => c.Estado) .Include(c => c.Rut) .SingleOrDefaultAsync(c => c.Id == cliente.Id && c.Nit == cliente.Nit); if (clienteBD == null) { throw new Exception("Cliente no encontrado, Se encontro alguna inconsistencia en los datos del cliente "); } _context.Entry(clienteBD).CurrentValues.SetValues(cliente); _context.Entry(clienteBD).State = EntityState.Modified; _context.Entry(clienteBD.Estado).CurrentValues.SetValues(cliente.Estado); foreach (var linea in cliente.Lineas) { var dblinea = _context.ClienteLinea.FirstOrDefault(f => f.Id == linea.Id); if (dblinea != null) {// Update subFoos that are in the newFoo.SubFoo collection _context.Entry(dblinea).CurrentValues.SetValues(linea); _context.Entry(dblinea).Properties.Select(d => d.IsModified = false); _context.Entry(dblinea).State = EntityState.Modified; } else { // Insert subFoos into the database that are not // in the dbFoo.subFoo collection ClienteLinea lineaAñadir = new ClienteLinea(); _context.Entry(lineaAñadir).CurrentValues.SetValues(linea); lineaAñadir.ClienteId = clienteBD.Id; _context.Entry(lineaAñadir).State = EntityState.Added; } } if (cliente.Rut != null) { _context.Entry(clienteBD.Rut).CurrentValues.SetValues(cliente.Rut); } //#region Actualizar LineaCliente //cliente.Lineas = cliente.Lineas ?? new List<ClienteLinea>(); //clienteBD.Lineas = clienteBD.Lineas ?? new List<ClienteLinea>(); ////se obtinen las lineas que fueron eliminadas en el objeto cliente que se recibe del cliente. //var lineasEliminar = (from hbd in clienteBD.Lineas // where !cliente.Lineas.Any(x => x.Id == hbd.Id && x.Guid == hbd.Guid) // select hbd).ToList(); ////se obtinen los tamaños que fueron agregados en el objeto herramienta que se recibe del cliente. //var lineasInsertar = (from hbd in cliente.Lineas // where !clienteBD.Lineas.Any(x => x.Id == hbd.Id && x.Guid == hbd.Guid) // select hbd).ToList(); //clienteBD.Lineas.ToList().ForEach(e => //{ // ClienteLinea cbd = (clienteBD.Lineas.FirstOrDefault(a => a.Id == e.Id)); // ClienteLinea c = (cliente.Lineas.FirstOrDefault(a => a.Id == e.Id)); // //campos a actualizar // e.ContactoCorreo = (c != null) ? c.ContactoCorreo : cbd.ContactoCorreo; // e.ContactoNombre = (c != null) ? c.ContactoNombre : cbd.ContactoNombre; // e.ContactoTelefono = (c != null) ? c.ContactoTelefono : cbd.ContactoTelefono; // e.Direccion = (c != null) ? c.Direccion : cbd.Direccion; // e.Nombre = (c != null) ? c.Nombre : cbd.Nombre; // lineasEliminar.ForEach(ef => // { // if (e.Id == ef.Id) { /*e.Estado = false;*/ } // }); //}); //lineasInsertar.ForEach(e => { e.Guid = Guid.NewGuid(); e.FechaRegistro = DateTime.Now; e.ClienteId = clienteBD.Id; }); //_context.ClienteLinea.UpdateRange(clienteBD.Lineas); //_context.ClienteLinea.AddRange(lineasInsertar); //#endregion cliente.FechaModifica = DateTime.Now; _context.Entry(clienteBD).Property("FechaRegistro").IsModified = false; _context.Entry(clienteBD).Property("NombreUsuarioCrea").IsModified = false; _context.Entry(clienteBD).Property("GuidUsuarioCrea").IsModified = false; //_context.Cliente.Update(cliente); return(await _context.SaveChangesAsync() > 0); } catch (Exception) { throw; } }