public override void OnException(HttpActionExecutedContext context) { var arguments = JsonConvert.SerializeObject(context.ActionContext.ActionArguments); var formatException = "{0} Url: {1}" + Environment.NewLine + "Arguments: {2}" + Environment.NewLine + "Exception: {3}" + Environment.NewLine + "StackTrace: {4}"; var log = LogManager.GetLogger(typeof(ExceptionHandlingAttribute)); log.Error(string.Format(formatException, context.Request.Method.Method, context.Request.RequestUri.AbsoluteUri, arguments, context.Exception.Message, context.Exception)); using (var contextBd = new CanvasExtendContenxt()) { var logEntity = new Log { Date = DateTime.Now, Loger = typeof(ExceptionHandlingAttribute).FullName, Message = context.Exception.Message, Exception = context.Exception.ToString(), Level = GlobalValues.ERROR }; contextBd.Log.Add(logEntity); contextBd.SaveChanges(); } }
public int SaveLog(LogDto log) { if (log == null) { return(-1); } var entity = new Log { Message = log.Message, Exception = log.Exception, Date = log.Date, Level = log.Level, Loger = log.Loger }; _context.Log.Add(entity); _context.SaveChanges(); return(entity.Id); }
public void EnqueueProcess(Expression <Action> action, int?progressId = null) { var call = action.Body as MethodCallExpression; if (call == null) { throw new Exception("La expresión no corresponde a una llamada a un método"); } if (call.Object == null) { throw new Exception("La expresión no corresponde a un método de instancia"); } var methodInfo = call.Method; var argsValues = call.Arguments.Select(a => { var argAsObj = Expression.Convert(a, typeof(object)); return(Expression.Lambda <Func <object> >(argAsObj, null) .Compile()()); }); var targetOnly = Expression.Lambda(call.Object, null); var compiled = targetOnly.Compile(); var result = compiled.DynamicInvoke(null); var type = result.GetType(); Task.Run(() => { using (var container = AutofacConfig.Container.BeginLifetimeScope()) { var service = container.Resolve(type); try { var invokeData = methodInfo.Invoke(service, argsValues.ToArray()); var state = ProgressInfoState.Completed; if (invokeData != null && progressId.HasValue) { var baseResult = invokeData as BaseResult; if (baseResult != null) { state = baseResult.HasErrors ? ProgressInfoState.HasErrors : state; } _cache.Put(string.Format(GlobalValues.CACHE_PROGRESS_INFO, progressId), invokeData, TimeSpan.FromMinutes(30)); } var progress = _contenxt.ProgressInfo.Find(progressId); if (progress != null) { progress.State = state.ToString(); progress.Completion = 100; _contenxt.SaveChanges(); } } catch (Exception exception) { var log = LogManager.GetLogger(typeof(JobService)); log.Error("Migracion", exception); var logEntity = new Log { Date = DateTime.Now, Loger = typeof(JobService).FullName, Message = exception.Message, Exception = exception.ToString(), Level = GlobalValues.ERROR }; _contenxt.Log.Add(logEntity); _contenxt.SaveChanges(); if (progressId.HasValue) { var progress = _contenxt.ProgressInfo.Find(progressId); if (progress != null) { progress.State = ProgressInfoState.Failed.ToString(); progress.Message = string.Format(CanvasApiStrings.ErrorJobServices, logEntity.Id); progress.Exception = exception.ToString(); progress.Completion = 100; _contenxt.SaveChanges(); } } } } }); }
public ResultValue <AccountExtendDto> UpdateAccountExtend(int id) { var result = new ResultValue <AccountExtendDto>(); var preData = PreValidarDatos(result, id); if (result.HasErrors) { return(result); } var resAccount = preData.Item1; var resCourses = preData.Item2; var resAccountExtend = preData.Item3; var estudiosGestor = _wEstudios.ObtenerEstudiosUNIR(0); var estudioGestor = estudiosGestor.Respuesta.FirstOrDefault(e => e.idEstudio == int.Parse(resAccount.Value.SisId)); if (estudioGestor == null) { result.Errors.Add(CanvasExtedStrings.ErrorEstudioNoExiste); return(result); } foreach (var courseCanvasDto in resCourses.Elements) { var asignatura = resAccountExtend.Value.Asignaturas.FirstOrDefault(a => a.Id == int.Parse(courseCanvasDto.SisId)); if (asignatura == null) { _coursesApi.Update(new CourseSaveParameters { Id = courseCanvasDto.Id, Asignatura = null }); } } var accountExtend = _context.AccountExtends.Find(id); accountExtend.Estudio.Nombre = estudioGestor.sNombreEstudio; accountExtend.PeriodoActivos.Clear(); accountExtend.Asignaturas.Clear(); /*****Guardar Asignaturas Asociadas al estudio*****/ var resAsignaturas = _wEstudios.ObtenerAsignaturasDeEstudio(int.Parse(resAccount.Value.SisId)); var ids = resAsignaturas.Respuesta.Select(a => a.idAsignatura).ToArray(); var asignaturas = _context.Asignaturas.Where(a => ids.Contains(a.Id)).ToList(); foreach (var item in resAsignaturas.Respuesta) { var asignatura = asignaturas.FirstOrDefault(a => a.Id == item.idAsignatura); if (asignatura == null) { asignatura = new Asignatura { Id = item.idAsignatura, Nombre = item.sNombreAsignatura }; _context.Asignaturas.Add(asignatura); } else { asignatura.Nombre = item.sNombreAsignatura; } accountExtend.Asignaturas.Add(asignatura); } /*****Guardar PeriodoActivos asociados al estudio*****/ var resPeriodosActivos = _wEstudios.ObtenerCursosDeAsignaturasDeEstudio(int.Parse(resAccount.Value.SisId)); ids = resPeriodosActivos.Respuesta.listaPeriodosActivos.Select(a => a.idPeriodoMatriculacion).ToArray(); var periodoActivos = _context.PeriodosActivos.Where(p => ids.Contains(p.Id)).ToList(); foreach (var item in resPeriodosActivos.Respuesta.listaPeriodosActivos) { var periodoActivo = periodoActivos.FirstOrDefault(a => a.Id == item.idPeriodoMatriculacion); if (periodoActivo == null) { periodoActivo = new PeriodoActivo { Id = item.idPeriodoMatriculacion, Nombre = item.sNombrePeriodoMatriculacion, FechaInicio = item.fechaInicioPeriodo, FechaFin = item.fechaFinPeriodo, NroPeriodo = item.iNumPeriodo, AnioAcademico = item.sAyoAcademinco }; _context.PeriodosActivos.Add(periodoActivo); } else { periodoActivo.Nombre = item.sNombrePeriodoMatriculacion; periodoActivo.FechaInicio = item.fechaInicioPeriodo; periodoActivo.FechaFin = item.fechaFinPeriodo; periodoActivo.NroPeriodo = item.iNumPeriodo; periodoActivo.AnioAcademico = item.sAyoAcademinco; } accountExtend.PeriodoActivos.Add(periodoActivo); } _context.SaveChanges(); return(result); }