Beispiel #1
0
        /// <summary>
        /// Método Público encargado de Actualizar la Confirmación del Evento
        /// </summary>
        /// <param name="tipo">Tipo de Confirmación</param>
        /// <param name="fecha">Fecha de Actualización</param>
        /// <param name="tipo_actualizacion_fin">Tipo de Actualización</param>
        /// <param name="id_usuario">Usuario que Actualiza el Registro</param>
        /// <returns></returns>
        public RetornoOperacion ActualizaConfirmacionEvento(TipoConfirmacion tipo, DateTime fecha, TipoActualizacion tipo_actualizacion_fin, int id_usuario)
        {
            //Declarando Objeto de Retorno
            RetornoOperacion result = new RetornoOperacion();

            //Inicializando Transacción
            using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted))
            {
                //Invocando Método de Actualización
                result = this.actualizaRegistros(this._id_detalle_acceso_patio, this._id_tipo_evento, this._id_entidad_patio, this._id_zona_patio,
                                                 tipo == TipoConfirmacion.Inicio ? fecha : this._fecha_inicio, tipo == TipoConfirmacion.Fin ? fecha : this._fecha_fin,
                                                 this._referencia, this._id_tipo_actualizacion_inicio, (byte)tipo_actualizacion_fin,
                                                 tipo == TipoConfirmacion.Inicio ? true : this._bit_confirmacion_asignacion_ini,
                                                 tipo == TipoConfirmacion.Fin ? true : this._bit_confirmacion_asignacion_fin, this._id_operador_asignado, this._fecha_asignacion,
                                                 this._fecha_confirmacion, this._bit_inicio_anden, this._bit_fin_anden, this._fecha_inicio_anden, this._fecha_fin_anden,
                                                 this._id_operador_fin, id_usuario, this._habilitar);

                //Validando que se actualizara el Registro
                if (result.OperacionExitosa)
                {
                    //Obteniendo Evento
                    int id_evt = result.IdRegistro;

                    //Instanciando Entidad Patio
                    using (EntidadPatio ep = new EntidadPatio(this._id_entidad_patio))
                    {
                        //Instanciando Entidad de Patio(Anden/Cajon)
                        if (ep.id_entidad_patio > 0)
                        {
                            //Actualizando Entidad
                            result = ep.ActualizaEventoActualEntidadPatio(ep.estatus, ep.estatus_carga, fecha, ep.id_evento, id_usuario);
                        }

                        //Validando que la Operación haya sido Exitosa
                        if (result.OperacionExitosa)
                        {
                            //Completando Transacción
                            trans.Complete();
                        }
                    }
                }
            }
            //Devolviendo Objeto de Retorno
            return(result);
        }
        public async Task <ActionResult> CrearMail(string txtMail, TipoConfirmacion tipo)
        {
            var telemetry = new TelemetryClient();

            try
            {
                Guid   id  = Guid.NewGuid();
                string url = "http://" + this.Request.Url.Authority + "/Confirmar/";
                System.Diagnostics.Trace.WriteLine($"[{DateTime.Now}] Enviando mail con URL {url + id}");

                if (!FuncionesEmail.IsValidEmail(txtMail))
                {
                    throw new ArgumentException("Email");
                }

                using (Models.SatcEntities entity = new SatcEntities())
                {
                    alumno a = entity.alumno.FirstOrDefault(alumnoEnDb => alumnoEnDb.correo.Equals(txtMail));
                    if (a == null)
                    {
                        throw new ArgumentOutOfRangeException("No hay alumnos con ese correo registrados");
                    }
                    var c = new confirmacion
                    {
                        tipo   = (int)tipo,
                        fecha  = DateTime.Now,
                        guid   = id,
                        alumno = new List <alumno>()
                        {
                            a
                        },
                        habilitado = true,
                    };
                    entity.confirmacion.Add(c);
                    bool      tarea = false;
                    Exception ex    = null;
                    switch (tipo)
                    {
                    case TipoConfirmacion.NO_ESPECIFICADO:
                        ex = new Exception("Tipo de mail para enviar no especificado");
                        goto default;

                    case TipoConfirmacion.ConfirmacionMail:
                        tarea = await Librerias.MailClient.EnviarMensajeRegistro(txtMail, url, id.ToString());

                        break;

                    case TipoConfirmacion.DesactivacionCuenta:
                        ex = new NotImplementedException("tipo de mail 'desactivarCuenta' no implementado");
                        goto default;

                    case TipoConfirmacion.Contrasena:
                        tarea = await Librerias.MailClient.EnviarMensajeContrasena(txtMail, url, id.ToString());

                        break;

                    default:
                        telemetry.TrackException(ex, new Dictionary <string, string> {
                            { "Controlador: ", "MailController" }
                        });
                        throw ex;
                    }
                    if (!tarea)
                    {
                        throw new Exception("Error al enviar el mail al correo especificado");
                    }

                    entity.SaveChanges();
                }
                ViewBag.TipoMail = (int)tipo;
                return(View("EstadoSolicitud"));
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine($"[{DateTime.Now}] Ha ocurrido una excepcion.");
                System.Diagnostics.Trace.WriteLine(ex.Message);
                System.Diagnostics.Trace.WriteLine(ex.ToString());
                ViewBag.ModalMessage = ex.Message;

                telemetry.TrackException(ex, new Dictionary <string, string> {
                    { "Controlador: ", "MailController" }
                });

                return(View("Error"));
                //throw ex;
            }
        }