public IHttpActionResult Create(List <General.Models.Cliente> clientes) { int idCliente = DataBase.Clientes.GetMaxValue <int>(p => p.IdCliente, 0); General.Models.ClienteCreateResponse clienteResponse = new Models.ClienteCreateResponse(); clienteResponse.Codigos = new List <Models.ClienteCodigoResult>(); Agente agente = DataBase.Agentes.Get(p => p.IdUsuario == CurrentUser.UserId).SingleOrDefault(); AgendaComercial.Models.Ruta.Ruta ruta = null; if (agente != null) { ruta = DataBase.Rutas.GetRutaOAsignar(agente.IdAgente); } foreach (var cliente in clientes) { Models.ClienteCodigoResult codigoResult = new Models.ClienteCodigoResult(); int newIdCliente = ++idCliente; int idClienteDireccionPrincipal = 0; Rp3.AgendaComercial.Models.General.Cliente clienteModel = new Cliente(); clienteModel.ClienteDato = new ClienteDato(); clienteModel.ClienteContactos = new List <ClienteContacto>(); clienteModel.ClienteDirecciones = new List <ClienteDireccion>(); Rp3.Data.Service.CopyTo(cliente, clienteModel, includeProperties: new string[] { "IdTipoIdentificacion", "Identificacion", "Nombre1", "Nombre2", "Apellido1", "Apellido2", "RazonSocial", "IdTipoCliente", "IdCanal", "CorreoElectronico", "TipoPersona", "Genero", "EstadoCivil", "FechaNacimiento", "ActividadEconomica", "PaginaWeb" }); Rp3.Data.Service.CopyTo(cliente, clienteModel.ClienteDato, includeProperties: new string[] { "Genero", "EstadoCivil", "FechaNacimiento", "ActividadEconomica", "PaginaWeb" }); clienteModel.Estado = Rp3.AgendaComercial.Models.Constantes.Estado.Activo; clienteModel.EstadoTabla = Rp3.AgendaComercial.Models.Constantes.Estado.Tabla; clienteModel.FecIng = this.GetCurrentDateTime(); clienteModel.UsrIng = this.CurrentUser.LogonName; clienteModel.TipoPersonaTabla = Rp3.AgendaComercial.Models.Constantes.TipoPersona.Tabla; clienteModel.ClienteDato.GeneroTabla = Rp3.AgendaComercial.Models.Constantes.Genero.Tabla; clienteModel.ClienteDato.EstadoCivilTabla = Rp3.AgendaComercial.Models.Constantes.TipoPersona.Tabla; int newIdClienteDireccion = 1; foreach (var direccion in cliente.ClienteDirecciones) { if (direccion.EsPrincipal) { idClienteDireccionPrincipal = newIdClienteDireccion; } clienteModel.ClienteDirecciones.Add(new ClienteDireccion() { AplicaRuta = true, Direccion = direccion.Direccion, EsPrincipal = direccion.EsPrincipal, Estado = Rp3.AgendaComercial.Models.Constantes.Estado.Activo, EstadoTabla = Rp3.AgendaComercial.Models.Constantes.Estado.Tabla, IdCiudad = direccion.IdCiudad, IdCliente = newIdCliente, IdClienteDireccion = newIdClienteDireccion, Latitud = direccion.Latitud, CiudadDescripcion = direccion.CiudadDescripcion, Longitud = direccion.Longitud, Referencia = direccion.Referencia, Telefono1 = direccion.Telefono1, Telefono2 = direccion.Telefono2, TipoDireccion = direccion.TipoDireccion, TipoDireccionTabla = Rp3.AgendaComercial.Models.Constantes.TipoDireccion.Tabla, }); codigoResult.Direcciones.Add(new Models.IntCodigoResult() { IdInterno = direccion.IdInterno, IdServer = newIdClienteDireccion }); newIdClienteDireccion++; } if (idClienteDireccionPrincipal == 0) { idClienteDireccionPrincipal = clienteModel.ClienteDirecciones.Min(p => p.IdClienteDireccion); } int newIdClienteContacto = 1; foreach (var contacto in cliente.ClienteContactos) { clienteModel.ClienteContactos.Add(new ClienteContacto() { Apellido = contacto.Apellido, Cargo = contacto.Cargo, CorreoElectronico = contacto.CorreoElectronico, IdCliente = newIdCliente, IdClienteContacto = newIdClienteContacto, IdClienteDireccion = contacto.IdClienteDireccion, Nombre = contacto.Nombre, Telefono1 = contacto.Telefono1, Telefono2 = contacto.Telefono2, Estado = Rp3.AgendaComercial.Models.Constantes.Estado.Activo, EstadoTabla = Rp3.AgendaComercial.Models.Constantes.Estado.Tabla }); codigoResult.Contactos.Add(new Models.IntCodigoResult() { IdInterno = contacto.IdInterno, IdServer = newIdClienteDireccion }); newIdClienteContacto++; } clienteModel.IdCliente = newIdCliente; clienteModel.ClienteDato.IdCliente = newIdCliente; DataBase.Clientes.Insert(clienteModel); DataBase.ClienteDatos.Insert(clienteModel.ClienteDato); foreach (var contacto in clienteModel.ClienteContactos) { DataBase.ClienteContactos.Insert(contacto); } foreach (var direccion in clienteModel.ClienteDirecciones) { DataBase.ClienteDirecciones.Insert(direccion); } if (ruta != null) { DataBase.Rutas.AgregarCliente(ruta.IdRuta, newIdCliente, idClienteDireccionPrincipal); } codigoResult.IdInterno = cliente.IdInterno; codigoResult.IdServer = clienteModel.IdCliente; clienteResponse.Codigos.Add(codigoResult); } DataBase.Save(); return(Ok(clienteResponse)); }
public IHttpActionResult UpdateFull(List <General.Models.Cliente> clientes) { int[] ids = clientes.Select(c => c.IdCliente).ToArray(); List <Rp3.AgendaComercial.Models.General.Cliente> clientesModel = DataBase.Clientes.Get(p => ids.Contains(p.IdCliente), includeProperties: "ClienteDato,ClienteDirecciones,ClienteContactos").ToList(); General.Models.ClienteCreateResponse clienteResponse = new Models.ClienteCreateResponse(); clienteResponse.Codigos = new List <Models.ClienteCodigoResult>(); foreach (var cliente in clientes) { Models.ClienteCodigoResult codigoResult = new Models.ClienteCodigoResult(); Rp3.AgendaComercial.Models.General.Cliente clienteModel = clientesModel.FirstOrDefault(p => p.IdCliente == cliente.IdCliente); Rp3.Data.Service.CopyTo(cliente, clienteModel, includeProperties: new string[] { "IdTipoIdentificacion", "Identificacion", "Nombre1", "Nombre2", "Apellido1", "Apellido2", "RazonSocial", "IdTipoCliente", "IdCanal", "CorreoElectronico", "TipoPersona", "Genero", "EstadoCivil", "FechaNacimiento", "ActividadEconomica", "PaginaWeb" }); Rp3.Data.Service.CopyTo(cliente, clienteModel.ClienteDato, includeProperties: new string[] { "Genero", "EstadoCivil", "FechaNacimiento", "ActividadEconomica", "PaginaWeb" }); clienteModel.FecMod = this.GetCurrentDateTime(); clienteModel.UsrMod = this.CurrentUser.LogonName; DataBase.Clientes.Update(clienteModel); DataBase.ClienteDatos.Update(clienteModel.ClienteDato); int newIdClienteDireccion = 1; if (clienteModel.ClienteDirecciones.Any()) { newIdClienteDireccion = clienteModel.ClienteDirecciones.Max(p => p.IdClienteDireccion) + 1; } var listInsert = cliente.ClienteDirecciones.Where(p => p.IdClienteDireccion == 0).ToList(); foreach (var c in listInsert) { c.IdClienteDireccion = newIdClienteDireccion; c.IdCliente = cliente.IdCliente; c.Estado = AgendaComercial.Models.Constantes.Estado.Activo; c.EstadoTabla = AgendaComercial.Models.Constantes.Estado.Tabla; c.AplicaRuta = true; codigoResult.Contactos.Add(new Models.IntCodigoResult() { IdInterno = c.IdInterno, IdServer = newIdClienteDireccion }); newIdClienteDireccion++; } foreach (var c in cliente.ClienteDirecciones) { c.IdCliente = clienteModel.IdCliente; } DataBase.ClienteDirecciones.Update(cliente.ClienteDirecciones, clienteModel.ClienteDirecciones, new string[] { "Direccion", "IdClienteDireccion", "IdCliente", "EsPrincipal", "IdCiudad", "CiudadDescripcion", "Latitud", "Longitud", "Referencia", "Telefono1", "Telefono2", "TipoDireccion" }); int newIdClienteContacto = 1; if (clienteModel.ClienteContactos.Any()) { newIdClienteContacto = clienteModel.ClienteContactos.Max(p => p.IdClienteContacto) + 1; } var listContactoNew = cliente.ClienteContactos.Where(p => p.IdClienteContacto == 0); foreach (var c in listContactoNew) { c.IdClienteContacto = newIdClienteContacto; c.IdCliente = cliente.IdCliente; c.Estado = Rp3.AgendaComercial.Models.Constantes.Estado.Activo; c.EstadoTabla = Rp3.AgendaComercial.Models.Constantes.Estado.Tabla; codigoResult.Contactos.Add(new Models.IntCodigoResult() { IdInterno = c.IdInterno, IdServer = newIdClienteContacto }); newIdClienteContacto++; } foreach (var c in cliente.ClienteContactos) { c.IdCliente = clienteModel.IdCliente; } DataBase.ClienteContactos.Update(cliente.ClienteContactos, clienteModel.ClienteContactos, new string[] { "Apellido", "IdCliente", "IdClienteContacto", "Cargo", "CorreoElectronico", "Nombre", "Telefono1", "Telefono2" }); codigoResult.IdInterno = cliente.IdInterno; codigoResult.IdServer = clienteModel.IdCliente; clienteResponse.Codigos.Add(codigoResult); } DataBase.Save(); return(Ok(clienteResponse)); }