public IActionResult LogoutSession([FromBody] LogoutSessionRequest request) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Result result = _sessionService.Logout(request, GetUserId()); if (result.Failure) { ModelState.AddErrors(result.Errors); return(BadRequest(ModelState)); } return(Ok(new EmptyResult())); }
public Core.Models.Result.Result Logout(LogoutSessionRequest request, string adminId) { ValidationResult validationResult = _logoutSessionValidator.Validate(request); if (!validationResult.IsValid) { _logger.LogWarning($"Invlid LogoutSessionRequest. Admin {adminId}"); return(Core.Models.Result.Result.Fail(validationResult.Errors)); } BaseSpecification <SessionEntity> specification = new BaseSpecification <SessionEntity>(); specification.AddFilter(x => x.Id == request.SessionId); specification.AddFilter(x => x.UserId == request.UserId); SessionEntity session = _sessionRepository.SingleOrDefault(specification); if (session == null) { _logger.LogError($"Sesion does not exist. SessionId {request.SessionId}, Admin {adminId}"); return(Core.Models.Result.Result.Fail("no_session", "No Session")); } session.EndType = SessionEndTypes.AdminLogout; bool removeSessionResult = _sessionRepository.Remove(session); if (!removeSessionResult) { _logger.LogError($"Faild to remove session. SessionId {request.SessionId}, Admin {adminId}"); return(Core.Models.Result.Result.Fail("error", "Error")); } _logger.LogInformation($"Sessions logout. UserId {request.SessionId}, Admin {adminId}"); return(Core.Models.Result.Result.Ok()); }