Exemplo n.º 1
0
 private void ProcessIncommingBug(string msg)
 {
     using (var scope = scopeFactory.CreateScope())
     {
         log.Debug("New Bug arrived " + msg);
         BugMessage bm = JsonConvert.DeserializeObject <BugMessage>(msg);
         var        repositoryScope = scope.ServiceProvider.GetRequiredService <IRepository <OrganizationCost> >();
         var        now             = DateTime.Now;
         try
         {
             var ocost = repositoryScope.GetFirst(x => x.Month == now.Month && x.Year == now.Year &&
                                                  x.OrganizationId == bm.message.organizationId);
             //ESTA - HAY Q ACTUALIZAR
             ocost.BugsAmount = ocost.BugsAmount + 1;
             repositoryScope.Update(ocost);
         }
         catch (InvalidOperationException)
         {
             //NO ESTA - HAY QUE AGREGAR LA TUPLA
             OrganizationCost oc = new OrganizationCost()
             {
                 BugsAmount     = 1,
                 Month          = now.Month,
                 Year           = now.Year,
                 OrganizationId = bm.message.organizationId,
                 UsersAmount    = 0
             };
             repositoryScope.Add(oc);
         }
         repositoryScope.Save();
     }
 }
        public async Task <IActionResult> Get([FromQuery] CostsFilterOptions queryParams)
        {
            try
            {
                Token token = (Token)this.HttpContext.Items["Token"];
                logger.Info("New request from userId: " + token.data.user.id + " arrived to obtain Costs for his Organization");
                if (!queryParams.HasOptions())
                {
                    logger.Error("Missing required query paramteters on url");
                    throw new ArgumentException("Missing required query parameters");
                }

                logger.Debug("Querying service for a report from: " +
                             queryParams.From.ToShortDateString() + " To: " + queryParams.To.ToShortDateString() +
                             " for organizationId: " + token.data.organizationId);
                List <MonthCost> result = this.costService.GetCosts(
                    queryParams.From,
                    queryParams.To,
                    token.data.organizationId
                    );
                return(Ok(result));
            }
            catch (ArgumentException exception)
            {
                return(BadRequest(exception.Message));
            }
            catch (Exception e) {
                return(BadRequest(e.Message));
            }
        }
        static Task HandleExceptionAsync(HttpContext context, System.Exception exception, IHostingEnvironment env, ILoggerManager logger)
        {
            var message = String.Empty;
            var code    = HttpStatusCode.InternalServerError; // 500 if unexpected

            switch (exception)
            {
            case BusinessException ex:
                code    = HttpStatusCode.BadRequest;
                message = $"Busines Exception: {ex.Message}";
                break;

            case DataException ex:
                code    = HttpStatusCode.BadRequest;
                message = $"DataException {ex.Message}";
                break;

            case BaseException ex:
                code    = HttpStatusCode.BadRequest;
                message = $"BaseException {ex.Message}";
                break;

            case System.Exception ex:
                code    = HttpStatusCode.InternalServerError;
                message = $"Exception: {ex.Message}";
                break;

            default:
                code    = HttpStatusCode.InternalServerError;
                message = $"Unexpected Error. {exception.Message}";
                break;
            }

            context.Response.Clear();
            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = (int)code;

            // logger.LogError(exception, message);
            logger.LogError(message);
            if (env.IsDevelopment())
            {
                logger.Debug(exception, message);
            }
            //logger.Information(exception, message);

            var result = new ApiResponse()
            {
                IsValid = false,
                Message = env.IsDevelopment() ? $"{message}{exception.StackTrace}" : message
            }.ToJson();

            return(context.Response.WriteAsync(result));
        }
Exemplo n.º 4
0
        public IActionResult Login([FromBody] UserModel login)
        {
            _logger.Information("Information is logged");
            _logger.Warning("Warning is logged");
            _logger.Debug("Debug log is logged");
            _logger.Error("Error is logged");

            IActionResult response = Unauthorized();
            var           user     = AuthenticateUser(login);

            if (user != null)
            {
                var tokenString = GenerateJSONWebToken(user);
                response = Ok(new { token = tokenString });
            }

            return(response);
        }
        public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
            _logger.Debug("OnActionExecutionAsync - Before");

            var logInfo = new LogInfo
            {
                Id = Guid.NewGuid()
            };

            logInfo.StartDateTime = DateTime.UtcNow;
            logInfo.ServerName    = Dns.GetHostName();
            logInfo.ServerIp      = context.HttpContext.Connection.LocalIpAddress.ToString();
            // logInfo.RemoteIp = context.HttpContext.Connection.RemoteIpAddress.ToString();

            var request = context.HttpContext.Request;

            logInfo.Uri        = request.Path;
            logInfo.StatusCode = context.HttpContext.Response.StatusCode.ToString();

            // HTTP Request parser
            using (var bodyReader = new StreamReader(request.Body))
            {
                var body = bodyReader.ReadToEnd() ?? String.Empty;
                logInfo.Data = JsonConvert.SerializeObject(
                    new { request.Headers, request.ContentType, request.Path, request.Protocol, request.Method, Body = body });
            }

            logInfo.ModuleCode    = context.Controller.GetType().Module.Name;
            logInfo.ModuleType    = context.Controller.GetType().Module.Name.Split('.').First();
            logInfo.ComponentCode = context.Controller.GetType().Name;
            //logInfo.CompCode = controllerActionDescriptor.ControllerName;
            logInfo.ComponentType = context.Controller.GetType().Namespace.Split('.').Last();

            ControllerActionDescriptor controllerActionDescriptor = (ControllerActionDescriptor)context.ActionDescriptor;

            logInfo.OperationCode = controllerActionDescriptor.ActionName;
            logInfo.OperationType = context.HttpContext.Request.Method;

            _logger.LogAudit(logInfo);

            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Restart();

            var nextContext = await next();

            if (nextContext.Exception == null)
            {
                _logger.Debug("OnActionExecutionAsync - After");

                stopwatch.Stop();
                TimeSpan ts = stopwatch.Elapsed;

                LogInfo logInfoResp = logInfo.Clone() as LogInfo;
                logInfoResp.ModuleCode    = null;
                logInfoResp.ModuleType    = null;
                logInfoResp.ComponentCode = null;
                logInfoResp.ComponentType = null;
                logInfoResp.OperationCode = null;
                logInfoResp.OperationType = null;

                logInfo.EndDateTime = ((DateTime)logInfo.StartDateTime).AddMilliseconds(stopwatch.ElapsedMilliseconds);
                logInfo.TimeElapsed = logInfo.TimeElapsed = stopwatch.ElapsedMilliseconds;

                if (nextContext.Result != null && nextContext.Result is ObjectResult)
                {
                    var nexValue = ((ObjectResult)(nextContext.Result)).Value;
                    // HTTP Response parser
                    logInfo.Data = JsonConvert.SerializeObject(
                        new { request.Headers, request.ContentType, request.Path, request.Protocol, request.Method, Body = nexValue });
                }

                _logger.LogAudit(logInfo);
            }
        }