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