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)); }
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()); }