private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { IContainerProvider myContainer = (App.Current as PrismApplication).Container; AppExceptionsService appExceptionsService = myContainer .Resolve <AppExceptionsService>(); AppStatus appStatus = myContainer .Resolve <AppStatus>(); Task.Run(async() => { await appExceptionsService.ReadFromFileAsync(); ExceptionRecordDto fooObject = new ExceptionRecordDto() { CallStack = (e.ExceptionObject as Exception).StackTrace, ExceptionTime = DateTime.Now, Message = (e.ExceptionObject as Exception).Message, DeviceModel = DeviceInfo.Model, DeviceName = DeviceInfo.Name, OSType = DeviceInfo.Platform.ToString(), OSVersion = DeviceInfo.Version.ToString(), }; if (appStatus.SystemStatus.UserID <= 0) { fooObject.MyUserId = null; } else { fooObject.MyUserId = appStatus.SystemStatus.UserID; } appExceptionsService.Items.Add(fooObject); await appExceptionsService.WriteToFileAsync(); }).Wait(); }
public async Task <IActionResult> Put([FromRoute] int id, [FromBody] ExceptionRecordDto data) { APIResult apiResult; #region 驗證 DTO 物件的資料一致性 if (!ModelState.IsValid) { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageEnum.傳送過來的資料有問題, payload: data); return(Ok(apiResult)); } #endregion var record = await ExceptionRecordService.GetAsync(id); if (record != null) { ExceptionRecordAdapterModel recordTarget = mapper.Map <ExceptionRecordAdapterModel>(data); recordTarget.Id = id; var result = mapper.Map <ExceptionRecordDto>(recordTarget); #region 修改記錄前的紀錄完整性檢查 VerifyRecordResult verify = await ExceptionRecordService.BeforeUpdateCheckAsync(record); if (verify.Success == false) { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageMappingHelper.Instance.GetErrorMessage(verify.MessageId), payload: result); return(Ok(apiResult)); } #endregion var verifyRecordResult = await ExceptionRecordService.UpdateAsync(recordTarget); if (verifyRecordResult.Success) { apiResult = APIResultFactory.Build(true, StatusCodes.Status202Accepted, ErrorMessageEnum.None, payload: null); } else { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageEnum.無法修改紀錄, payload: result); } } else { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageEnum.沒有任何符合資料存在, payload: data); } return(Ok(apiResult)); }
public async Task <IActionResult> Post([FromBody] ExceptionRecordDto data) { APIResult apiResult; #region 驗證 DTO 物件的資料一致性 if (!ModelState.IsValid) { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageEnum.傳送過來的資料有問題, payload: data); return(Ok(apiResult)); } #endregion ExceptionRecordAdapterModel record = mapper.Map <ExceptionRecordAdapterModel>(data); if (record != null) { var result = mapper.Map <ExceptionRecordDto>(record); #region 新增記錄前的紀錄完整性檢查 VerifyRecordResult verify = await ExceptionRecordService.BeforeAddCheckAsync(record); if (verify.Success == false) { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageMappingHelper.Instance.GetErrorMessage(verify.MessageId), payload: result); return(Ok(apiResult)); } #endregion var verifyRecordResult = await ExceptionRecordService.AddAsync(record); if (verifyRecordResult.Success) { apiResult = APIResultFactory.Build(true, StatusCodes.Status201Created, ErrorMessageEnum.None, payload: null); } else { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageEnum.無法新增紀錄, payload: result); } } else { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageEnum.傳送過來的資料有問題, payload: data); } return(Ok(apiResult)); }