Exemple #1
0
        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));
        }
Exemple #2
0
        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));
        }