Exemplo n.º 1
0
        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; }
        }