/// <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; } }