예제 #1
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));
        }
예제 #2
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());
        }