private STrayecto creaAgencias(SEATrayecto trayecto) { BLAgencia blAgencia = new BLAgencia(); List <SPuntoControl> ListaPuntosControl = new List <SPuntoControl>(); trayecto.ListaPuntosControlAgencia.ForEach(x => { if (x.Agencia != null) { if (x.IdAgencia == null) { x.Agencia = blAgencia.addAgencia(x.Agencia); x.IdAgencia = x.Agencia.Id; } else { blAgencia.updateAgencia(x.Agencia); } } ListaPuntosControl.Add(x); }); STrayecto t = trayecto; t.ListaPuntosControl = ListaPuntosControl; return(t); }
public Trayecto entidadAModelo(STrayecto t, Trayecto tr) { tr.nombre = t.Nombre; tr.version = t.Version; tr.borrado = t.Borrado; return(tr); }
public int paquetesTransito(STrayecto a) { try { return(_dal.paquetesTransito((int)a.Id)); } catch (Exception) { throw; } }
public STrayecto updateTrayecto(STrayecto a) { try { return(_dal.updateTrayecto(a)); } catch (Exception) { throw; } }
public STrayecto addTrayecto(STrayecto a) { try { //a.validation(); //falta comprobar que no esten duplicadas las agencias y eso, y probablemente mas cosas tambien xD return(_dal.addTrayecto(a)); } catch (Exception) { throw; } }
public IHttpActionResult addTrayecto(STrayecto a) { try { BLTrayecto bl = new BLTrayecto(); return(Ok(bl.addTrayecto(a))); } catch (Exception e) { return(Content(HttpStatusCode.InternalServerError, e.Message)); } }
public STrayecto updateTrayecto(STrayecto a) { using (trackingFULLEntities en = new trackingFULLEntities()) { try { List <string> ids = new List <string>(); foreach (SEAPuntoControlAgencia p in a.ListaPuntosControl) { if (p.Id != null) { ids.Add(((int)p.Id).ToString()); } } String query = "Select * from PuntoControl WHERE PuntoControl.borrado = 0 and PuntoControl.idTrayecto = " + a.Id; if (ids.Count > 0) { query += " and id NOT IN(" + string.Join(", ", ids) + ")"; } en.Database.SqlQuery <SPuntoControl>(query).ToList().ForEach(x => { x.Borrado = true; en.SaveChanges(); }); Trayecto ag = en.Trayecto.Find(a.Id); ag = _conv.entidadAModelo(a, ag); DALPuntoControl dalp = new DALPuntoControl(); if (a.ListaPuntosControl != null) { a.ListaPuntosControl.ToList().ForEach(x => { x.IdTrayecto = ag.id; if (x.Id > 0) { dalp.updatePuntoControl(x); } else { dalp.addPuntoControl(x); } }); } en.SaveChanges(); return(_conv.modeloAEntidad(ag)); } catch (Exception) { throw; } } }
public Trayecto entidadAModelo(STrayecto t) { Trayecto trayecto = new Trayecto() { nombre = t.Nombre, version = t.Version, borrado = t.Borrado }; if (t.Id != null) { trayecto.id = (int)t.Id; } return(trayecto); }
public IHttpActionResult updateTrayecto(STrayecto a) { try { BLTrayecto bl = new BLTrayecto(); if (!bl.paquetesEnTransito((int)a.Id)) { return(Ok(bl.updateTrayecto(a))); } throw new ECompartida("Hay paquetes en transito en este trayecto actualmente"); } catch (Exception e) { return(Content(HttpStatusCode.InternalServerError, e.Message)); } }
public STrayecto addTrayecto(STrayecto a) { using (trackingFULLEntities en = new trackingFULLEntities()) { try { Trayecto ag = en.Trayecto.Add(_conv.entidadAModelo(a)); if (a.ListaPuntosControl != null) { a.ListaPuntosControl.ForEach(x => { ag.PuntoControl.Add(_conv.entidadAModelo(x)); }); } else { ag.PuntoControl.Add(new PuntoControl() { nombre = "Recibido en origen", orden = 1, tiempo = 0, borrado = false }); ag.PuntoControl.Add(new PuntoControl() { nombre = "Esperando en origen", orden = 2, tiempo = 0, borrado = false }); ag.PuntoControl.Add(new PuntoControl() { nombre = "En viaje", orden = 3, tiempo = 0, borrado = false }); ag.PuntoControl.Add(new PuntoControl() { nombre = "Recibido en destino", orden = 4, tiempo = 0, borrado = false }); ag.PuntoControl.Add(new PuntoControl() { nombre = "Entregado al cliente", orden = 5, tiempo = 0, borrado = false }); } en.SaveChanges(); return(_conv.modeloAEntidad(ag)); } catch (Exception e) { throw; } } }
public dynamic detallesPaquete(string email, string role, int idPaquete) { try { SPaquete paquete = this.getPaquete(idPaquete); BLCliente blCliente = new BLCliente(); if (role != "Admin") { SCliente cliente = blCliente.getClienteByEmail(email); if (cliente != null) { if (cliente.Id != paquete.IdDestinatario && cliente.Id != paquete.IdRemitente) { throw new ECompartida("No tienes acceso a la informacion de este paquete"); } } else { throw new ECompartida("El email enviado en la solicitud no pertenece a un cliente del sistema"); } } SCliente Remitente = blCliente.getCliente((int)paquete.IdRemitente); SCliente Destinatario = blCliente.getCliente((int)paquete.IdDestinatario); BLTrayecto bLTrayecto = new BLTrayecto(); STrayecto Trayecto = bLTrayecto.getTrayecto((int)paquete.IdTrayecto); BLPuntoControl bLPuntoControl = new BLPuntoControl(); Trayecto.ListaPuntosControl = bLPuntoControl.puntosControlDeUnTrayecto((int)paquete.IdTrayecto); BLPaquetePuntoControl bLPaquetePuntoControl = new BLPaquetePuntoControl(); List <SPaquetePuntoControl> PaquetePuntosControl = bLPaquetePuntoControl.puntosControlDeUnPaquete((int)paquete.Id); dynamic respuesta = new ExpandoObject(); respuesta.IdTrayecto = paquete.Id; respuesta.Qr = paquete.Codigo; respuesta.Trayecto = Trayecto; respuesta.Remitente = Remitente; respuesta.Destinatario = Destinatario; respuesta.PaquetePuntoControl = PaquetePuntosControl; return(respuesta); } catch (Exception) { throw; } }
//TRAYECTO public STrayecto modeloAEntidad(Trayecto t) { if (t == null) { return(null); } STrayecto trayecto = new STrayecto() { Id = t.id, Nombre = t.nombre, Version = (int)t.version, Borrado = (bool)t.borrado, ListaPuntosControl = new List <SPuntoControl>() }; t.PuntoControl.ToList().ForEach(x => { if (x.borrado == false || x.borrado == null) { trayecto.ListaPuntosControl.Add(modeloAEntidad(x)); } }); return(trayecto); }
public IHttpActionResult Authenticate(SAEData d) { try { SUsuario usuario = d.usuario; SEATrayecto trayecto = d.trayecto; STrayecto ActualTrayecto = null; SAEPaquete p = d.paquete; BLCliente bl = new BLCliente(); BLUsuario blusuario = new BLUsuario(); SUsuario oUsuario = blusuario.login(usuario); BLPaquete blPaquete = new BLPaquete(); if (usuario == null) { return(Content(HttpStatusCode.Unauthorized, "El usuario no existe")); } else if (oUsuario.Rol != "Admin" && oUsuario.Rol != "Funcionario" && oUsuario.Rol != "Encargado") { return(Content(HttpStatusCode.Unauthorized, "El usuario no esta autorisado para usar elte servicio")); } if (p.adelanta != null) { if (p.Id == null) { return(Content(HttpStatusCode.Unauthorized, "Error en paquete, se intento adelantar pero no se recibio el identificador")); } else { return(Ok(blPaquete.avanzar(new SPaquetePuntoControl() { IdPaquete = (int)p.Id, IdEmpleado = oUsuario.Id }))); } } if (p.atrasa != null) { if (p.Id == null) { return(Content(HttpStatusCode.Unauthorized, "Error en paquete, se intento retroceder pero no se recibio el identificador")); } else { return(Ok(blPaquete.retroceder(new SPaquetePuntoControl() { IdPaquete = (int)p.Id, IdEmpleado = oUsuario.Id }))); } } if (p.entrega != null) { if (p.Id == null) { return(Content(HttpStatusCode.Unauthorized, "Error en paquete, se intento entregar pero no se recibio el identificador")); } else if (p.code == null) { return(Content(HttpStatusCode.Unauthorized, "Error en paquete, se intento entregar pero no se recibio el codigo")); } else { return(Ok(blPaquete.entregaCliente(new SPaquetePuntoControl() { IdEmpleado = oUsuario.Id, IdPaquete = (int)p.Id }, p.code))); } } STrayecto t = trayecto; if ((p.IdDestinatario == p.IdRemitente && p.IdRemitente != null) || (p.Remitente != null && p.Destinatario != null && p.Destinatario.NumeroDocumento == p.Remitente.NumeroDocumento)) { return(Content(HttpStatusCode.NotFound, "Error en el paquete, el destinatario no puede ser el remitente")); } string sMsg = p.validacion(); if (sMsg != "") { return(Content(HttpStatusCode.NotFound, sMsg)); } else { SCliente cActualDestinatario = null; SCliente cActualRemitente = null; if (p.IdDestinatario != null) { cActualDestinatario = bl.getCliente((int)p.IdDestinatario); } else { bl.validacion(p.Destinatario); } if (p.IdRemitente != null) { cActualRemitente = bl.getCliente((int)p.IdRemitente); } else { bl.validacion(p.Remitente); } if (cActualDestinatario == null && p.Destinatario == null) { return(Content(HttpStatusCode.NotFound, "Error en el paquete, el destinatario no existe en el sistema")); } if (cActualRemitente == null && p.Remitente == null) { return(Content(HttpStatusCode.NotFound, "Error en el paquete, el remitente no existe en el sistema")); } if (p.IdTrayecto != null && p.IdTrayecto != t.Id) { return(Content(HttpStatusCode.NotFound, "Error en el paquete, no pertenece al trayecto enviado")); } else if (trayecto == null && d.IdTrayecto == null) { return(Content(HttpStatusCode.NotFound, "Error en el trayecto, faltan los datos")); } else if (d.IdTrayecto != null) { BLTrayecto blTrayecto = new BLTrayecto(); ActualTrayecto = blTrayecto.getTrayecto((int)d.IdTrayecto); if (ActualTrayecto == null) { return(Content(HttpStatusCode.NotFound, "El trayecto no existe.")); } } else if (trayecto != null) { BLTrayecto blTrayecto = new BLTrayecto(); string sMsgTrayecto = trayecto.validasionCrearAgencias(); if (sMsgTrayecto != "") { return(Content(HttpStatusCode.NotFound, sMsgTrayecto)); } else if (trayecto.Id == null) { ActualTrayecto = blTrayecto.addTrayecto(creaAgencias(trayecto)); } else { if (blTrayecto.paquetesTransito(trayecto) != 0) { return(Content(HttpStatusCode.NotFound, "Hay paquetes en transito")); } else { ActualTrayecto = blTrayecto.updateTrayecto(creaAgencias(trayecto)); } } } if (p.IdTrayecto == null) { p.IdTrayecto = ActualTrayecto.Id; } if (p.Destinatario != null && cActualDestinatario != null) { cActualDestinatario = bl.updateCliente(p.Destinatario); } else if (p.Destinatario != null && cActualDestinatario == null) { p.Destinatario.Id = 0; cActualDestinatario = bl.addCliente(p.Destinatario); } if (p.Remitente != null && cActualRemitente != null) { cActualRemitente = bl.updateCliente(p.Remitente); } else if (p.Remitente != null && cActualRemitente == null) { p.Remitente.Id = 0; cActualRemitente = bl.addCliente(p.Remitente); } p.IdDestinatario = cActualDestinatario.Id; p.IdRemitente = cActualRemitente.Id; SPaquete np = null; if (p.Id == null) { np = blPaquete.addPaquete(p); } else { np = blPaquete.updatePaquete(p); } return(Ok(new SAERespuesta() { usuario = usuario, trayecto = t, paquete = np })); } } catch (Exception e) { return(Content(HttpStatusCode.InternalServerError, e.Message)); } }
public SPaquetePuntoControl avanzar(SPaquetePuntoControl ppc) { try { var _dalPPC = new DALPaquetePuntoControl(); var _dalPC = new DALPuntoControl(); var _dalT = new DALTrayecto(); SPaquete p = _dal.getPaquete(ppc.IdPaquete); if (p != null && p.Borrado == false) { STrayecto t = _dalT.getTrayecto((int)p.IdTrayecto); List <SPaquetePuntoControl> ppcList = _dalPPC.getAllByPaquete((int)p.Id); ppc.FechaLlegada = DateTime.Now; ppc.Borrado = false; if (ppcList.Count > 0) { if (t.ListaPuntosControl.Max(x => x.Orden) > ppcList.Max(y => t.ListaPuntosControl.First(z => z.Id == y.IdPuntoControl).Orden) + 1) { SPuntoControl pcActual = t.ListaPuntosControl.First(x => x.Orden == ppcList.Max(y => t.ListaPuntosControl.First(z => z.Id == y.IdPuntoControl).Orden) + 1); ppc.IdPuntoControl = (int)t.ListaPuntosControl.First(x => x.Orden == pcActual.Orden).Id; int tiempoEstimado = 0; t.ListaPuntosControl.ForEach(x => { if (x.Orden <= pcActual.Orden) { tiempoEstimado += x.Tiempo; } }); int tiempoViaje = (p.FechaIngreso - ppc.FechaLlegada).Seconds; if ((tiempoViaje <= tiempoEstimado)) { ppc.Retraso -= (tiempoEstimado - tiempoViaje); } else { ppc.Retraso += (tiempoViaje - tiempoEstimado); } BLEmail.actualizacionEstado(new BLPaquete().getPaquete(ppc.IdPaquete)); return(_dalPPC.addPaquetePuntoControl(ppc)); } else if (t.ListaPuntosControl.Max(x => x.Orden) == ppcList.Max(y => t.ListaPuntosControl.First(z => z.Id == y.IdPuntoControl).Orden) + 1) { throw new ECompartida("Solo queda el ultimo paso de entrega, para esto debe realizar la peticion correspondiente enviando el codigo proporcionado por el cliente"); } else { throw new ECompartida("El paquete ya llego a su punto final, no se puede avanzar mas"); } } else { ppc.IdPuntoControl = (int)t.ListaPuntosControl.First(x => x.Orden == 1).Id; return(_dalPPC.addPaquetePuntoControl(ppc)); } } throw new ECompartida("Error"); } catch (Exception) { throw; } }