예제 #1
0
        public String GetDomainValue(int nParentId, int nDomainColumnaId, int nLineNumber)
        {
            var           oContainer = ODataContextWrapper.GetContainer();
            List <Domain> oDominios  = oContainer.Domains.Expand(a => a.DomainValues).Where(b => b.ParentId == nParentId).ToList();

            return(oDominios.FirstOrDefault(c => c.Id == nDomainColumnaId).DomainValues.FirstOrDefault(c => c.LineNumber == nLineNumber).Value);
        }
예제 #2
0
        public void LeerArchivo(string archivo, Ticket ticket)
        {
            String rutax = _valores[4] + archivo;

            rutax = rutax.Replace("/", "\\");

            try
            {
                //Lleyendo el JSON
                using (StreamReader lector = new StreamReader(@rutax))
                {
                    while (lector.Peek() > -1)
                    {
                        string linea = lector.ReadLine();
                        if (!String.IsNullOrEmpty(linea))
                        {
                            _contenido += linea;
                        }
                    }
                }

                //Deserializando JSON en una CLase
                JsonCorreo = JsonConvert.DeserializeObject <JsonCorreo>(_contenido);

                string valor           = "";
                var    containeValores = ODataContextWrapper.GetContainer();
                //Almacenando Palabras que esten entre {XXXXXX} y asignando la palabras para reemplazar
                foreach (Match match in Regex.Matches(JsonCorreo.Body, @"\{([^{}\]]*)\}"))
                {
                    valor = match.Value.Replace("{", "");
                    valor = valor.Replace("}", "");

                    //Opteniendo el Id del Field buscando por name
                    var fieldId = containeValores.Fields.Where(f => f.Name == valor).FirstOrDefault().Id;
                    //Opteniendo el Valor del ticker filtrandolo
                    var name = ticket.TicketValues.Where(t => t.FieldId == fieldId).FirstOrDefault().Value;
                    valor = "{" + valor + "}";
                    palabrasClaves.Add(new PalabrasClave()
                    {
                        clave = valor, palabra = name
                    });
                }



                //Reemplazar las palabras Claves para enviar Correos
                foreach (PalabrasClave p in palabrasClaves)
                {
                    JsonCorreo.Body = ReemplazarPalabras(JsonCorreo.Body, p.clave, p.palabra);
                }
            }

            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
예제 #3
0
        private void ProcesarTicket(Ticket ticket)
        {
            bool _buscarPolicyCenter, _existeValorProducto, _buscarContactManager;
            int  _idEstadoInicio;

            try
            {
                var container = ODataContextWrapper.GetContainer();
                //poner parametro
                List <Domain> dominios = container.Domains.Expand(dv => dv.DomainValues).Where(df => df.ParentId == _dominioProceso).ToList();
                //poner parametro
                int numero = dominios.FirstOrDefault(o => o.Name == "id").DomainValues.FirstOrDefault(o => o.Value == ticket.TicketValues.FirstOrDefault(f => f.FieldId == eesFields.Default.idproceso).Value).LineNumber;
                _existeValorProducto = ValidacionProducto(ticket);
                //poner parametro para las buquesdas de dominio
                _buscarPolicyCenter   = ValidacionPoliCenter(dominios, numero);
                _buscarContactManager = ValidacionContactManager(dominios, numero);
                _idEstadoInicio       = Convert.ToInt32(dominios.FirstOrDefault(o => o.Name == _procesoInicio).DomainValues.FirstOrDefault(o => o.LineNumber == numero).Value);
                _idEstadoError        = Convert.ToInt32(dominios.FirstOrDefault(o => o.Name == _estadoError).DomainValues.FirstOrDefault(o => o.LineNumber == numero).Value);
            }
            catch (Exception ex)
            {
                throw new Exception("Error al Verificar el tipo de Proceso", ex);
            }

            if (_buscarPolicyCenter && ticket.TicketValues.FirstOrDefault(tv => tv.FieldId == eesFields.Default.poliza_nro).Value != "")
            {
                if (!_existeValorProducto)
                {
                    BuscarPolicyCenter(ticket);
                }
            }
            if (_buscarContactManager)
            {
                List <StateAction> accionesEstado = _robot.GetNextStateAction(_robot.Tickets.FirstOrDefault());
                _estadoContact     = accionesEstado.Where(se => se.ActionDescription == "Avanzar").FirstOrDefault();
                _finProcesoContact = true;
            }
            if (_reprocesoContador > 0)
            {
                _reprocesoContador = 0;
                _idEstadoRetorno   = 0;
                _Funciones.GuardarValoresReprocesamiento(ticket, _reprocesoContador, _idEstadoRetorno);
            }

            if (_finProcesoContact)
            {
                _robot.SaveTicketNextState(ticket, _estadoContact.Id);
            }
            else
            {
                _robot.SaveTicketNextState(ticket, _robot.GetNextStateAction(ticket).First(o => o.DestinationStateId == _idEstadoInicio).Id);
            }
        }
예제 #4
0
        public void ProcesarTicket(Ticket ticket)
        {
            ticket = _robot.Tickets.FirstOrDefault();


            //CAMPO QUE VIENE DE LOS ROBOT QUE INDICA QUE TIPO DE PLANTILLA USARA
            _valoresTicket[2] = ticket.TicketValues.FirstOrDefault(a => a.FieldId == eesFields.Default.id_archivo_tipo_adj).Value;
            //idProceso
            _valoresTicket[7] = ticket.TicketValues.FirstOrDefault(a => a.FieldId == eesFields.Default.idproceso).Value;
            //Asegurado Nombre
            _valoresTicket[0] = ticket.TicketValues.FirstOrDefault(a => a.FieldId == eesFields.Default.asegurado_nombre).Value;
            //Poliza
            _valoresTicket[1] = ticket.TicketValues.FirstOrDefault(a => a.FieldId == eesFields.Default.poliza_nro).Value;
            //Correos
            _valoresTicket[3] = ticket.TicketValues.FirstOrDefault(a => a.FieldId == eesFields.Default.email_para).Value;
            //Correos Copias
            _valoresTicket[4] = ticket.TicketValues.FirstOrDefault(a => a.FieldId == eesFields.Default.email_cc).Value;
            //Dni
            _valoresTicket[6] = ticket.TicketValues.FirstOrDefault(a => a.FieldId == eesFields.Default.nro_dni).Value;

            //Optenr el NOmbre de la Plantilla
            var dominio = ODataContextWrapper.GetContainer();

            NombrePlantilla = dominio.DomainValues.Where(c => c.Id == Convert.ToInt32(_valoresTicket[2])).FirstOrDefault().Value;

            //Optener todos lo Ticket del Workflow "Adjuntar Documentos"
            List <Ticket> ticketDocumento = _robot.GetDataQueryTicket().Where(t => t.StateId == Convert.ToInt32(_valores[3])).ToList();

            //Almacenar los TicketValue de Tickets
            foreach (var item in ticketDocumento)
            {
                ticketValue.Add(_robot.GetDataQueryTicketValue().Where(t => t.TicketId == item.Id).OrderBy(t => t.Id).First());
                ticketValue.Add(_robot.GetDataQueryTicketValue().Where(t => t.TicketId == item.Id).OrderByDescending(t => t.Id).First());
            }

            //Optener el Ultimo Tickets Adjuntar Documentos dependiendo el Tipo de Plantilla
            var idticket = ticketValue.Where(t => t.Value == _valoresTicket[2]).OrderByDescending(t => t.Id).Select(t => new { t.TicketId }).FirstOrDefault();

            //Optener la Plantilla del ticketValue
            var valorTicket = ticketValue.Where(t => t.TicketId == Convert.ToInt32(idticket.TicketId) && t.FieldId == Convert.ToInt32(_valores[2])).OrderByDescending(t => t.Id).Select(t => new { t.Value }).FirstOrDefault();

            //Opteneniendo la Ruta de la Plantilla
            _rutaPlantilla = Convert.ToString(valorTicket.Value);

            LeerArchivo(_rutaPlantilla, ticket);

            //Metodo Email
            EnviarEmail();

            EdentificarProceso(ticket, "");
        }
예제 #5
0
        public string ObtenerValorDominio(Ticket ticket, int idDominio)
        {
            var container = ODataContextWrapper.GetContainer();

            try
            {
                if (ticket != null)
                {
                    return(container.DomainValues.Where(p => p.Id == idDominio).FirstOrDefault().Value.Trim().ToUpperInvariant());
                }
            }
            catch
            {
                return(null);
            }
            return(null);
        }
예제 #6
0
        private void ProcesarTicket(Ticket ticket)
        {
            bool _buscarPolicyCenter, _existeValorProducto, _buscarContactManager;
            int  _idEstadoInicio;

            try
            {
                var container = ODataContextWrapper.GetContainer();
                //poner parametro
                List <Domain> dominios = container.Domains.Expand(dv => dv.DomainValues).Where(df => df.ParentId == 1055).ToList();

                //poner parametro
                int numero = dominios.FirstOrDefault(o => o.Name == "nombre").DomainValues.FirstOrDefault(o => o.Value == "Anulación de Póliza").LineNumber;
                // FunctionalDomains<List<DomainValue>> objSearch4 = _Funciones.GetDomainValuesByParameters(_robot.SearchDomain, "Procesos Version Final", new string[,] { { "nombre", "Anulación de Póliza" }, { "activo", "1" } });
                //cambiar id 18 referencial por el id del campo producto real
                _existeValorProducto = ValidacionProducto(ticket);
                //poner parametro para las buquesdas de dominio
                _buscarPolicyCenter   = ValidacionPoliCenter(dominios, numero);
                _buscarContactManager = ValidacionContactManager(dominios, numero);
                _idEstadoInicio       = Convert.ToInt32(dominios.FirstOrDefault(o => o.Name == "id_estado_inicio").DomainValues.FirstOrDefault(o => o.LineNumber == numero).Value);
            }
            catch (Exception ex)
            {
                throw new Exception("Error al Verificar el tipo de Proceso", ex);
            }

            if (_buscarPolicyCenter)
            {
                if (!_existeValorProducto)
                {
                    BuscarPolicyCenter(ticket);
                }
            }

            if (_buscarContactManager)
            {
                List <StateAction> accionesEstado  = _robot.GetNextStateAction(_robot.Tickets.FirstOrDefault());
                StateAction        siguienteEstado = accionesEstado.Where(se => se.ActionDescription == "Ir ContactManager").FirstOrDefault();
                _robot.SaveTicketNextState(ticket, siguienteEstado.Id);
            }
            else
            {
                _robot.SaveTicketNextState(ticket, _idEstadoInicio);
            }
        }
예제 #7
0
        private void EnviarPadre(Ticket ticketPadre, bool error)
        {
            try
            {
                var container = ODataContextWrapper.GetContainer();

                var ticket = container.Tickets.Where(o => o.Id == ticketPadre.Id).FirstOrDefault();

                if (error)
                {
                    ticket.StateId = Convert.ToInt32(ticketPadre.TicketValues.FirstOrDefault(o => o.FieldId == _estadoError).Value);
                }
                else
                {
                    ticket.StateId = Convert.ToInt32(ticketPadre.TicketValues.FirstOrDefault(o => o.FieldId == _estadoPadre).Value);
                }

                container.UpdateObject(ticket);

                container.SaveChanges();
            }
            catch { throw new Exception("No fue posible realizar lo cambio de estado de el ticket Padre"); }
        }
예제 #8
0
        public static void ExecFunc(string mensagem, Action method)
        {
            try
            {
                method();
            }
            catch (Exception ex)
            {
                if (BaseRobotUtil == null)
                {
                    throw new Exception("Error inicialización ExecFunctionLog/BaseRobot.");
                }

                StackTrace stackTrace = new StackTrace();
                var        container  = ODataContextWrapper.GetContainer();
                LogData    logData    = new LogData();
                var        lgm        = container.LogMessages.Where(x => x.Id == 47);
                logData.LogLevel   = LogLevel.Process;
                logData.ErrorType  = ErrorType.Exception;
                logData.Method     = stackTrace.GetFrame(1).GetMethod().Name;
                logData.Parameters = new System.Collections.ObjectModel.ObservableCollection <KeyValueModel>();
                string strEstado = Utils.GetKeyFromConfig("nomEstado") != null?Utils.GetKeyFromConfig("nomEstado") : string.Empty;

                string strGuid = Utils.GetKeyFromConfig("robotGuid") != null?Utils.GetKeyFromConfig("robotGuid") : string.Empty;

                logData.Parameters.Add(new KeyValueModel()
                {
                    Key = "strMsg", Value = mensagem
                });
                logData.Parameters.Add(new KeyValueModel()
                {
                    Key = "nomEstado", Value = strEstado
                });
                logData.CreationDate = DateTime.Now;
                if (BaseRobotUtil.StateFields != null && BaseRobotUtil.StateFields.Count > 0)
                {
                    logData.StateId = BaseRobotUtil.StateFields.First().StateId;
                    if (BaseRobotUtil.StateFields.First() != null)
                    {
                        logData.State = BaseRobotUtil.StateFields.First().State;
                    }
                }
                logData.Exception             = ex.Message;
                logData.StackTrace            = ex.ToString();
                logData.LogMessageId          = 47;
                logData.RobotVirtualMachineId = new Guid(strGuid);

                if (lgm != null && lgm.Count() > 0)
                {
                    logData.LogMessage  = lgm.First();
                    logData.Description = string.Format(logData.LogMessage.MessageLog.Replace("strMsg", "0").Replace("nomEstado", "1"), mensagem, strEstado);
                }
                else
                {
                    logData.Description = string.Format("{0} estado de ejecución: {1}", mensagem, strEstado);
                }

                container.AddToLogDatas(logData);
                container.SaveChanges();

                throw new Exception(logData.Description);
            }
        }
예제 #9
0
        public List <DomainValue> ListadoValoresDominios()
        {
            var container = ODataContextWrapper.GetContainer();

            return(container.DomainValues.Where(a => a.DomainId == Convert.ToInt32(_domainpalabrasclaves)).ToList());
        }