public long Add(int Id_Prensa) { long Id_Request = -1; try { log.Debug("MemoryGeneratedRequest. Add(). "); //Add Request Solicitudes model = new Solicitudes(); Model.BL.DTO.Solicitud solicitud = new Model.BL.DTO.Solicitud(); solicitud.Id_Prensa = Id_Prensa; solicitud.Fecha_Generacion = DateTime.Now; Id_Request = model.Agregar(solicitud); PendingRequestLogic pendingRequestLogic = new PendingRequestLogic(); pendingRequestLogic.SetConfiguration(Estado_Solicitud.Pendiente, null, null); _dicRequest.Add(Id_Request, pendingRequestLogic); //Add to History Model.BL.Historico_Solicitud modelHistoric = new Model.BL.Historico_Solicitud(ConfigurationManager.ConnectionStrings["PrensasConfigDB"].ConnectionString); Model.BL.DTO.Historico_Solicitud historico = new Model.BL.DTO.Historico_Solicitud(); historico.Fecha = solicitud.Fecha_Generacion; historico.Id_Solicitud = Id_Request; historico.Estado = Estado_Solicitud.Pendiente; modelHistoric.Agregar(historico); } catch (Exception er) { log.Error("Add()", er); } return(Id_Request); }
public long MarkAs(long Id_Request, Estado_Solicitud state, int?id_Usuario, int?id_Device) { long idRequestCambioEstado = -1; try { // Configuramos el estado de las notificaciones en memoria log.Debug("MarkAs. Guardando el estado en memoria"); PendingRequestLogic confRequest = null; if (_dicRequest.TryGetValue(Id_Request, out confRequest)) { // Obtenemos el estado actual Estado_Solicitud?estadoSolicitud = confRequest.GetRequestState; if (estadoSolicitud != null && state < estadoSolicitud) { //Add to History Model.BL.Historico_Solicitud modelHistoric = new Model.BL.Historico_Solicitud(ConfigurationManager.ConnectionStrings["PrensasConfigDB"].ConnectionString); Model.BL.DTO.Historico_Solicitud historico = new Model.BL.DTO.Historico_Solicitud(); historico.Fecha = DateTime.Now; historico.Id_Solicitud = Id_Request; historico.Estado = state; idRequestCambioEstado = modelHistoric.Agregar(historico); //Change State confRequest.SetConfiguration(state, id_Usuario, id_Device); } } } catch (Exception er) { log.Error("MarkAs()", er); } return(idRequestCambioEstado); }
public PendingRequestLogic GetNextRequest(int id_Usuario) { PendingRequestLogic request = new PendingRequestLogic(); try { //Get Prensas for user List <int> prensasUsuario = _catalogPrensas.GetUserPrensas(id_Usuario); List <PrensaCatalog.DTO.Prensa> listCaracteristicas = new List <PrensaCatalog.DTO.Prensa>(); if (prensasUsuario.Count > 0) { foreach (int prensaId in prensasUsuario) { listCaracteristicas.Add(GetCaracteristicasPrensa(prensaId)); } //Agrupamos y cogemos el grupo con mayor prioridad var groupsPrioridad = listCaracteristicas.OrderByDescending(x => x.prioridad).GroupBy(x => x.prioridad).First(); //Convertimos en lista con IDs de prensa con mayor prioridad var lstMaxPrioridad = groupsPrioridad.Select(x => x).ToList(); var lstIdsMaxPrioridad = lstMaxPrioridad.Select(x => x.prensa.Id).ToList(); //Buscamos las solicitudes asociadas a las prensas var matches = _dicRequest.Where(kvp => lstIdsMaxPrioridad.Contains(kvp.Value.GetIdPrensa)).Select(x => x); //Elegimos la solicitud más antigua var match = from x in matches where x.Value.GetDateGeneration == matches.Min(v => v.Value.GetDateGeneration) select x.Value; if (match.Count() > 0) { request = match.ElementAt(0); } } }catch (Exception ex) { log.Error("GetNextRequest()", ex); } return(request); }