示例#1
0
 public LoginPage()
 {
     InitializeComponent();
     controlsVM  = (Application.Current as App).ControlsVM;
     dashBoardVM = (Application.Current as App).DashVM;
     mapVM       = (Application.Current as App).MapVM;
     errorVm     = (Application.Current as App).ErrorVm;
 }
示例#2
0
        public static ErrorVm GetErrorVm(string message, ErrorType type)
        {
            var vm = new ErrorVm();

            vm.ErrorMessage = message;
            vm.Type         = type;

            return(vm);
        }
        private ErrorVm GetExceptionObject(ExceptionContext context)
        {
            var result = new ErrorVm
            {
                Message    = context.Exception.Message,
                StackTrace = context.Exception.StackTrace
            };

            return(result);
        }
示例#4
0
文件: Log.cs 项目: ecrap/CashMachine
        private static StringBuilder TextEntryLog(ErrorVm logEntry)
        {
            var sb = new StringBuilder();

            sb.Append(Assembly.GetExecutingAssembly().GetName().Name).Append("|");
            sb.Append(logEntry.CardNumber).Append("|");
            sb.Append(logEntry.ErrorMessage.Replace(Environment.NewLine, " ")).Append("|");
            sb.Append(logEntry.ErrorId).Append("|");
            sb.Append(DateTime.Now);
            return(sb);
        }
示例#5
0
 public ControlsPage(MapVM map, ControlsVM controls, DashBoardVM dashBoard, ErrorVm error)
 {
     errorVm     = error;
     mapVM       = map;
     controlsVM  = controls;
     dashBoardVM = dashBoard;
     InitializeComponent();
     Map.DataContext       = mapVM;
     DashBoard.DataContext = dashBoardVM;
     Controls.DataContext  = controlsVM;
     Error.DataContext     = errorVm;
 }
        /// <summary>
        /// Build Error and write response.
        /// </summary>
        /// <param name="context">Http context.</param>
        /// <param name="exception">Current exception.</param>
        /// <returns>Error response body.</returns>
        private static Task BuildErrorResponse(HttpContext context, Exception exception)
        {
            // default
            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = StatusCodes.Status500InternalServerError;

            // error wrappée
            ErrorVm errorVm = new ErrorVm();

            errorVm.Code    = ErrorCode.GenericServer;
            errorVm.Message = localizer[Constants.Errors.InternalServerError];
#if DEBUG
            errorVm.DebugMessage = exception.Message;
            errorVm.StackTrace   = exception.StackTrace;
#endif

            if (exception is ConcurrentAccessException)
            {
                errorVm.Code    = ErrorCode.ConcurrentAccess;
                errorVm.Message = "acces concurrent";
            }
            else if (exception is ForeignKeyException)
            {
                errorVm.Code    = ErrorCode.ForeignKey;
                errorVm.Message = "error fk";
            }
            else if (exception is UniqueKeyException)
            {
                errorVm.Code    = ErrorCode.UniqueKeyConstraint;
                errorVm.Message = "unique key";
            }
            else if (exception is AuthorizationException)
            {
                errorVm.Code                = ErrorCode.AccessDenied;
                errorVm.Message             = "accès refusé";
                context.Response.StatusCode = context.User.Identity.IsAuthenticated
                    ? (int)StatusCodes.Status403Forbidden
                    : (int)StatusCodes.Status401Unauthorized;
            }
            else if (exception is EntityNotFoundException)
            {
                errorVm.Code                = ErrorCode.NotFound;
                errorVm.Message             = "entité non trouvée";
                context.Response.StatusCode = StatusCodes.Status404NotFound;
            }

            string errorString = JsonConvert.SerializeObject(errorVm);
            return(context.Response.WriteAsync(errorString));
        }
示例#7
0
        public async Task UpdateUser_Concurrency_Ko(string verb, string url)
        {
            this.fixture.MockUser.Ts = 1234; // mock wrong ts
            string jsonIn = JsonConvert.SerializeObject(this.fixture.MockUser);

            var request = new HttpRequestMessage(new HttpMethod(verb), string.Format(url, this.fixture.MockUser.Id));

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", this.fixture.JwtToken);
            request.Content = new StringContent(jsonIn, Encoding.UTF8, "application/json");

            var response = await this.fixture.HttpClient.SendAsync(request);

            var     jsonOut = response.Content.ReadAsStringAsync().Result;
            ErrorVm vm      = JsonConvert.DeserializeObject <ErrorVm>(jsonOut);

            Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode); // http 500
            Assert.Equal(ErrorCode.ConcurrentAccess, vm.Code);                     // code spécific accès concurrent
        }
示例#8
0
        public async override Task ExecuteResultAsync(ActionContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var errorVm = new ErrorVm()
            {
                Code = ErrorCode.ValidationFailed,
                ValidationDictionnay = ToValidation(modelState)
            };

            var jsonResult = new JsonResult(errorVm);

            jsonResult.StatusCode = StatusCodes.Status400BadRequest;

            await jsonResult.ExecuteResultAsync(context);
        }
示例#9
0
        public ErrorVm Init(long userId, long id)
        {
            //Get current user
            var user = BlUser.LoadSingle(userId);

            var error = LoadSingle(userId, id);
            var toRet = new ErrorVm
            {
                Type     = BlCode.GetCodeByLanguage(user, BlCode.LoadSingle(userId, "ErrorType", error.Type.ToUiString())),
                Severity = BlCode.GetCodeByLanguage(user, BlCode.LoadSingle(userId, "ErrorSeverity", error.Severity.ToUiString())),
                Source   = error.Source,
                Text     = error.Text,
                UserName = BlUser.LoadSingle(error.UserId).UserName,
                Branch   = BlBranch.GetBranchName(user.Id, error.BranchId),
                Date     = error.EntryDate.ToString(true)
            };

            return(toRet);
        }
示例#10
0
        public async Task CreateUser_ValidationFailed(string verb, string url)
        {
            var emptyMock = new UserVm()
            {
            };
            string jsonIn = JsonConvert.SerializeObject(emptyMock);

            var request = new HttpRequestMessage(new HttpMethod(verb), url);

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", this.fixture.JwtToken);
            request.Content = new StringContent(jsonIn, Encoding.UTF8, "application/json");

            var response = await this.fixture.HttpClient.SendAsync(request);

            var     jsonOut = response.Content.ReadAsStringAsync().Result;
            ErrorVm vm      = JsonConvert.DeserializeObject <ErrorVm>(jsonOut);

            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); // http 400
            Assert.Equal(ErrorCode.ValidationFailed, vm.Code);            // validation failed
        }
示例#11
0
        /// <summary>
        /// Si une exception est lancée depuis un controller
        /// </summary>
        /// <param name="filterContext">Contexte du filtre</param>
        public override void OnException(HttpActionExecutedContext filterContext)
        {
            if (filterContext == null)
            {
                throw new ArgumentNullException("filterContext est null");
            }

            // création du message
            ErrorVm errorVm = ErrorVm.LoadException(filterContext.Exception);

            // init du message succes=false
            MessageCoreVm msg = new MessageCoreVm()
            {
                ErrorObject = errorVm,
                Success     = false
            };

            // création de la réponse
            filterContext.Response = filterContext.Request.CreateResponse(HttpStatusCode.OK, msg);
        }
示例#12
0
文件: Log.cs 项目: ecrap/CashMachine
        public void LogEntry(ErrorVm logEntry)
        {
            var logFileInfo = new FileInfo(LogFilePath);
            var logDirInfo  = new DirectoryInfo(logFileInfo.DirectoryName);

            if (!logDirInfo.Exists)
            {
                logDirInfo.Create();
            }
            var isnew      = !logFileInfo.Exists;
            var fileStream = isnew ? logFileInfo.Create() : new FileStream(LogFilePath, FileMode.Append);
            var sb         = TextEntryLog(logEntry);
            var log        = new StreamWriter(fileStream);

            if (isnew)
            {
                log.WriteLine(TextHeader().ToString());
            }
            log.WriteLine(sb.ToString());
            log.Close();
        }
        public async void Validate_Ko()
        {
            // valide un user vide
            UserVm userVm    = new UserVm();
            var    validator = new UserValidator();
            var    results   = validator.Validate(userVm);

            // simul modelstate d'un controller
            ModelStateDictionary mockModelState = new ModelStateDictionary();

            results.AddToModelState(mockModelState, null);

            // simul ValidationFailedResult
            // TODO test ValidationFailedResult possible ?
            var errorVm = new ErrorVm()
            {
                Code = ErrorCode.ValidationFailed,
                ValidationDictionnay = ValidationFailedResult.ToValidation(mockModelState)
            };

            // compare avec format du json attendu
            string json      = JsonConvert.SerializeObject(errorVm);
            string jsonCheck =
                @"{ ""code"":6,
                    ""validation"":
                    {
                        ""Email"":[""Email cannot be empty""],
                        ""LastName"":[""LastName cannot be empty""],
                        ""Password"":[""Password cannot be empty""],
                        ""UserName"":[""User Name cannot be empty""],
                        ""FirstName"":[""FirstName cannot be empty""]
                    }
                }";

            bool jsonOk = JToken.DeepEquals(JToken.Parse(json), JToken.Parse(jsonCheck));

            Assert.False(mockModelState.IsValid);
            Assert.True(jsonOk);
        }
示例#14
0
        public IActionResult Index(int id)
        {
            var vm = new ErrorVm
            {
                StatusCode = id,
                RequestId  = HttpContext.TraceIdentifier,
                TraceId    = Activity.Current?.Id ?? string.Empty
            };

            var statusCodeReExecuteFeature = HttpContext.Features.Get <IStatusCodeReExecuteFeature>();

            if (statusCodeReExecuteFeature != null)
            {
                vm.Path =
                    statusCodeReExecuteFeature.OriginalPathBase
                    + statusCodeReExecuteFeature.OriginalPath
                    + statusCodeReExecuteFeature.OriginalQueryString;
            }

            var       exceptionHandlerPathFeature = HttpContext.Features.Get <IExceptionHandlerPathFeature>();
            Exception error = null;

            if (exceptionHandlerPathFeature != null)
            {
                vm.Path = exceptionHandlerPathFeature.Path;
                error   = exceptionHandlerPathFeature.Error;
            }

            using (_logger.BeginScope(new Dictionary <string, object> {
                { "StatusCode", id }
            }))
            {
                _logger.LogError(error, "System error");
            }

            return(View(vm));
        }
示例#15
0
 public AccountController()
 {
     Dal     = new CashMachineDal();
     ErrorVm = new ErrorVm();
     Log     = new Log();
 }