Пример #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));
        }
Пример #2
0
        public IHttpActionResult UpdateFull(List <Models.AgendaUpdate> agendas)
        {
            var agente = DataBase.Agentes.Get(p => p.Usuario.LogonName == CurrentUser.LogonName).FirstOrDefault();

            Ruta.Models.AgendaUpdateResponse response = new Models.AgendaUpdateResponse()
            {
                Result = new List <Models.AgendaResult>()
            };

            if (agente != null)
            {
                foreach (var agenda in agendas)
                {
                    Rp3.AgendaComercial.Models.Ruta.Agenda modelInsert = null;

                    try
                    {
                        bool insert = agenda.IdAgenda == 0;

                        AgendaComercial.Models.Ruta.Ruta ruta = DataBase.Rutas.GetRutaOAsignar(agente.IdAgente);
                        agente.IdRuta = ruta.IdRuta;

                        if (insert)
                        {
                            modelInsert = new Rp3.AgendaComercial.Models.Ruta.Agenda()
                            {
                                AgendaTareas = new List <AgendaComercial.Models.Ruta.AgendaTarea>()
                            };
                            modelInsert.IdRuta             = ruta.IdRuta;
                            modelInsert.OrigenTabla        = AgendaComercial.Models.Constantes.OrigenAgenda.Tabla;
                            modelInsert.Origen             = AgendaComercial.Models.Constantes.OrigenAgenda.Movil;
                            modelInsert.IdCliente          = agenda.IdCliente;
                            modelInsert.IdClienteDireccion = agenda.IdClienteDireccion;
                        }
                        else
                        {
                            modelInsert = DataBase.Agendas.Get(p => p.IdRuta == agente.IdRuta && p.IdAgenda == agenda.IdAgenda).SingleOrDefault();
                        }

                        modelInsert.EstadoAgenda            = agenda.EstadoAgenda;
                        modelInsert.FechaFinGestionTicks    = agenda.FechaFinGestionTicks;
                        modelInsert.FechaInicioGestionTicks = agenda.FechaInicioGestionTicks;

                        modelInsert.FechaFinTicks    = agenda.FechaFinTicks;
                        modelInsert.FechaInicioTicks = agenda.FechaInicioTicks;

                        modelInsert.IdAgenda = agenda.IdAgenda;

                        if (modelInsert.IdClienteContacto.HasValue && modelInsert.IdClienteContacto != 0)
                        {
                            modelInsert.IdClienteContacto = agenda.IdClienteContacto;
                        }
                        else
                        {
                            modelInsert.IdClienteContacto = null;
                        }

                        modelInsert.Latitud              = agenda.Latitud;
                        modelInsert.Longitud             = agenda.Longitud;
                        modelInsert.MotivoNoGestion      = agenda.MotivoNoGestion;
                        modelInsert.Observacion          = agenda.Observacion;
                        modelInsert.MotivoReprogramacion = agenda.MotivoReprogramacion;
                        if (agenda.MotivoReprogramacion != null && agenda.MotivoReprogramacion != "0")
                        {
                            modelInsert.EsReprogramada = true;
                        }
                        modelInsert.MotivoReprogramacionTabla = agenda.MotivoReprogramacionTabla;
                        modelInsert.Duracion            = agenda.Duracion;
                        modelInsert.DistanciaUbicacion  = agenda.DistanciaUbicacion;
                        modelInsert.TiempoViaje         = agenda.TiempoViaje;
                        modelInsert.FechaFinOriginal    = agenda.FechaFinOriginal;
                        modelInsert.FechaInicioOriginal = agenda.FechaInicioOriginal;

                        modelInsert.UsrIng = CurrentUser.LogonName;
                        modelInsert.UsrMod = CurrentUser.LogonName;
                        modelInsert.FecMod = GetCurrentDateTime();

                        modelInsert.IdAgente = agente.IdAgente;

                        modelInsert.MotivoNoGestionTabla = AgendaComercial.Models.Constantes.MotivosNoGestion.Tabla;
                        modelInsert.EstadoAgendaTabla    = AgendaComercial.Models.Constantes.EstadoAgenda.Tabla;

                        modelInsert.AgendaTareas.Clear();

                        if (insert)
                        {
                            modelInsert.AsignarId();
                            modelInsert.FecIng = GetCurrentDateTime();
                            modelInsert.FecMod = modelInsert.FecIng;
                        }

                        if (agenda.AgendaTareas != null)
                        {
                            foreach (var tarea in agenda.AgendaTareas)
                            {
                                AgendaComercial.Models.Ruta.AgendaTarea agendaTarea = new AgendaComercial.Models.Ruta.AgendaTarea()
                                {
                                    IdRuta                 = modelInsert.IdRuta,
                                    IdAgenda               = modelInsert.IdAgenda,
                                    IdTarea                = tarea.IdTarea,
                                    EstadoTareaTabla       = AgendaComercial.Models.Constantes.EstadoTarea.Tabla,
                                    EstadoTarea            = tarea.EstadoTarea,
                                    AgendaTareaActividades = new List <AgendaComercial.Models.Ruta.AgendaTareaActividad>()
                                };
                                agendaTarea.Tarea = DataBase.Tareas.GetSingleOrDefault(p => p.IdTarea == tarea.IdTarea);
                                modelInsert.AgendaTareas.Add(agendaTarea);

                                //Si se envian las actividades entonces se crean a partir de la definición de la base de datos
                                if (tarea.AgendaTareaActividades != null && tarea.AgendaTareaActividades.Any())
                                {
                                    var tareaActividades = DataBase.TareaActividades.Get(p => p.IdTarea == tarea.IdTarea);

                                    foreach (var act in tareaActividades)
                                    {
                                        var respuesta = tarea.AgendaTareaActividades.Where(p => p.IdTareaActividad == act.IdTareaActividad).FirstOrDefault();

                                        var actividad = new Rp3.AgendaComercial.Models.Ruta.AgendaTareaActividad()
                                        {
                                            IdAgenda              = modelInsert.IdAgenda,
                                            IdRuta                = modelInsert.IdRuta,
                                            IdTarea               = act.IdTarea,
                                            IdTareaActividad      = act.IdTareaActividad,
                                            IdTareaActividadPadre = act.IdTareaActividadPadre,
                                            Descripcion           = act.Descripcion,
                                            IdTipoActividad       = act.IdTipoActividad,
                                            Orden    = act.Orden,
                                            Opciones = act.Opciones
                                        };

                                        if (respuesta != null)
                                        {
                                            actividad.IdTareaOpcion   = respuesta.IdTareaOpcion;
                                            actividad.Resultado       = respuesta.Resultado;
                                            actividad.ResultadoCodigo = respuesta.ResultadoCodigo;
                                        }

                                        agendaTarea.AgendaTareaActividades.Add(actividad);
                                    }
                                }
                            }
                        }

                        if (insert)
                        {
                            DataBase.Agendas.ExecuteSerializableInsert(modelInsert);
                        }
                        else
                        {
                            DataBase.Agendas.ExecuteSerializableUpdate(modelInsert);
                        }

                        response.Result.Add(new Models.AgendaResult()
                        {
                            IdAgendaServer = modelInsert.IdAgenda,
                            IdRutaServer   = modelInsert.IdRuta,
                            IdInterno      = agenda.IdInterno,
                            Ok             = true
                        });
                    }
                    catch (Exception e)
                    {
                        response.Result.Add(new Models.AgendaResult()
                        {
                            IdInterno = agenda.IdInterno,
                            Ok        = false,
                            Error     = e.Message
                        });
                    }
                }
            }
            return(Ok(response));
        }
Пример #3
0
        public IHttpActionResult UpdateFull(Models.Pedido pedido)
        {
            var agente = DataBase.Agentes.Get(p => p.Usuario.LogonName == CurrentUser.LogonName).FirstOrDefault();
            int id     = 0;

            if (agente != null)
            {
                Rp3.AgendaComercial.Models.Pedido.Pedido modelInsert = null;

                try
                {
                    bool insert = pedido.IdPedido == 0;

                    AgendaComercial.Models.Ruta.Ruta ruta = DataBase.Rutas.GetRutaOAsignar(agente.IdAgente);
                    agente.IdRuta = ruta.IdRuta;

                    if (insert)
                    {
                        modelInsert = new Rp3.AgendaComercial.Models.Pedido.Pedido()
                        {
                            PedidoDetalles = new List <AgendaComercial.Models.Pedido.PedidoDetalle>()
                        };
                        modelInsert.IdRuta      = ruta.IdRuta;
                        modelInsert.EstadoTabla = AgendaComercial.Models.Constantes.EstadoPedido.Tabla;
                    }
                    else
                    {
                        modelInsert = DataBase.Pedidos.Get(p => p.IdPedido == pedido.IdPedido).SingleOrDefault();
                    }

                    modelInsert.Estado    = pedido.Estado;
                    modelInsert.Email     = pedido.Email;
                    modelInsert.IdCliente = pedido.IdCliente;

                    modelInsert.ValorTotal = pedido.ValorTotal;

                    if (pedido.IdAgenda == 0)
                    {
                        modelInsert.IdAgenda = null;
                    }
                    else
                    {
                        modelInsert.IdAgenda = pedido.IdAgenda;
                    }

                    modelInsert.IdCliente = pedido.IdCliente;

                    modelInsert.FecMod = GetCurrentDateTime();
                    modelInsert.UsrMod = CurrentUser.LogonName;

                    modelInsert.IdAgente = agente.IdAgente;

                    //modelInsert.PedidoDetalles.Clear();

                    if (insert)
                    {
                        modelInsert.AsignarId();
                        modelInsert.FecIng = GetCurrentDateTime();
                        modelInsert.UsrIng = CurrentUser.LogonName;
                    }

                    if (pedido.PedidoDetalles != null)
                    {
                        var detallesUpload = new List <AgendaComercial.Models.Pedido.PedidoDetalle>();
                        int lastId         = 0;
                        foreach (var detalle in pedido.PedidoDetalles)
                        {
                            AgendaComercial.Models.Pedido.PedidoDetalle detalleUpload = new AgendaComercial.Models.Pedido.PedidoDetalle()
                            {
                                IdPedido      = modelInsert.IdPedido,
                                Cantidad      = detalle.Cantidad,
                                Descripcion   = detalle.Descripcion,
                                IdProducto    = detalle.IdProducto,
                                ValorTotal    = detalle.ValorTotal,
                                ValorUnitario = detalle.ValorUnitario
                            };
                            if (lastId == 0)
                            {
                                detalleUpload.AsignarId();
                                lastId = detalleUpload.IdPedidoDetalle;
                            }
                            else
                            {
                                detalleUpload.IdPedidoDetalle = lastId;
                            }
                            lastId++;

                            detallesUpload.Add(detalleUpload);
                        }

                        DataBase.PedidoDetalles.Update(detallesUpload, modelInsert.PedidoDetalles);
                    }

                    if (insert)
                    {
                        DataBase.Pedidos.Insert(modelInsert);
                    }
                    else
                    {
                        DataBase.Pedidos.Update(modelInsert);
                    }

                    DataBase.Save();
                    id = modelInsert.IdPedido;

                    DataBase.Pedidos.NotificacionPedido(id);
                }
                catch (Exception e)
                {
                }
            }
            return(Ok(id));
        }
Пример #4
0
        public IHttpActionResult Insert(Models.Agenda agenda)
        {
            var    agente  = DataBase.Agentes.Get(p => p.Usuario.LogonName == CurrentUser.LogonName).FirstOrDefault();
            string infoXml = String.Empty;

            if (agente != null)
            {
                try
                {
                    AgendaComercial.Models.Ruta.Ruta ruta = DataBase.Rutas.GetRutaOAsignar(agente.IdAgente);
                    agente.IdRuta = ruta.IdRuta;

                    //foreach (var agenda in agendas)
                    //{
                    var modelInsert = new Rp3.AgendaComercial.Models.Ruta.Agenda()
                    {
                        AgendaTareas = new List <AgendaComercial.Models.Ruta.AgendaTarea>()
                    };

                    Rp3.Data.Service.CopyTo(agenda, modelInsert, includeProperties: new string[] {
                        "IdCliente",
                        "IdClienteDireccion",
                        "IdClienteContacto",
                        "FechaInicioTicks",
                        "FechaFinTicks",
                        "Observacion",
                        "MotivoReprogramacion",
                        "MotivoReprogramacionTabla",
                        "Duracion",
                        "TiempoViaje",
                        "DistanciaUbicacion",
                        "FechaInicioOriginalTicks",
                        "FechaFinOriginalTicks"
                    });

                    modelInsert.IdRuta   = agente.IdRuta ?? 0;
                    modelInsert.IdAgente = agente.IdAgente;

                    modelInsert.EstadoAgendaTabla = AgendaComercial.Models.Constantes.EstadoAgenda.Tabla;
                    modelInsert.EstadoAgenda      = AgendaComercial.Models.Constantes.EstadoAgenda.Pendiente;
                    modelInsert.OrigenTabla       = AgendaComercial.Models.Constantes.OrigenAgenda.Tabla;
                    modelInsert.Origen            = AgendaComercial.Models.Constantes.OrigenAgenda.Movil;
                    modelInsert.UsrIng            = CurrentUser.LogonName;
                    modelInsert.FecIng            = GetCurrentDateTime();

                    modelInsert.AsignarId();

                    if (agenda.AgendaTareas != null)
                    {
                        foreach (var tarea in agenda.AgendaTareas)
                        {
                            modelInsert.AgendaTareas.Add(new AgendaComercial.Models.Ruta.AgendaTarea()
                            {
                                IdRuta           = modelInsert.IdRuta,
                                IdAgenda         = modelInsert.IdAgenda,
                                IdTarea          = tarea.IdTarea,
                                EstadoTareaTabla = AgendaComercial.Models.Constantes.EstadoTarea.Tabla,
                                EstadoTarea      = AgendaComercial.Models.Constantes.EstadoTarea.Pendiente,
                            });
                        }
                    }

                    DataBase.Agendas.Insert(modelInsert);
                    //}

                    DataBase.Save();

                    return(Ok(modelInsert.IdAgenda));
                }
                catch (Exception ex)
                {
                    return(BadRequest(ex.Message));
                }
            }

            return(Ok());
        }