public async Task RemoveArcFromList(string userId, int id) { var arc = this.dbContext.Arcs.Find(id); if (arc == null) { throw new KeyNotFoundException("Arc with given id does not exist."); } var user = this.dbContext.Users .Include(u => u.UsersArcs) .FirstOrDefault(u => u.Id == userId); if (!user.UsersArcs.Any(uv => uv.Arc == arc)) { throw new InvalidOperationException("User does not have given arc in their list."); } var userArc = new UserArc { User = user, Arc = arc }; user.UsersArcs.Remove(userArc); await this.dbContext.SaveChangesAsync(); }
public async Task <string> SavePic(UserArc userArc, byte imageType, IFormFile image) { string mainFolder = imageType switch { 0 => ((PictureTypeEnum)imageType).ToString().ToLower(), 1 => ((PictureTypeEnum)imageType).ToString().ToLower(), 2 => ((PictureTypeEnum)imageType).ToString().ToLower(), 3 => ((PictureTypeEnum)imageType).ToString().ToLower(), _ => PictureTypeEnum.Other.ToString().ToLower(), }; string resultFileName = imageType + "_" + userArc.ArcNo + "_" + DateTimeOffset.Now.ToUnixTimeSeconds().ToString(); string folder = mainFolder + Path.DirectorySeparatorChar + userArc.UserId; string fileFullName = folder + resultFileName; try { BlobContainerClient blobContainer = await GetOrCreateCloudBlobContainer(GetUploadPicContainerName(), PublicAccessType.None); if (fileFullName != null && image != null) { BlobClient blobClient = blobContainer.GetBlobClient(fileFullName); await blobClient.UploadAsync(image.OpenReadStream()); return(blobClient.Uri.AbsoluteUri); } return(""); } catch (Exception ex) { throw (ex); } }
public async Task <int?> RateArc(string userId, RateApiRequestModel model) { var arc = this.dbContext.Arcs.Find(model.Id); if (arc != null) { var userArc = arc.UsersArcs.FirstOrDefault(ua => ua.UserId == userId); if (userArc == null) { userArc = new UserArc { UserId = userId, ArcId = model.Id, Score = model.Score, }; arc.UsersArcs.Add(userArc); this.dbContext.Update(arc); await this.dbContext.SaveChangesAsync(); } else { userArc.Score = model.Score; this.dbContext.Update(arc); await this.dbContext.SaveChangesAsync(); } return(model.Score); } return(null); }
public async Task <bool> CheckUploadFileExistence(UserArc userArc, PictureTypeEnum typeEnum, String fileName) { String folder = typeEnum.ToString().ToLower() + Path.DirectorySeparatorChar + userArc.UserId; var filePath = Path.Combine(folder, fileName); return(folderHandler.IsFileExists(workingRootPath, filePath)); }
public async Task <IActionResult> GetUserImage([FromRoute, SwaggerParameter("id,可從/useradmin取得", Required = true)] long userId, [FromRoute, SwaggerParameter("2:證件正面照,3:證件反面照", Required = true)] byte type) { UserArc userArc = userService.GetUserArcById(userId); string imageFileName = null; switch (type) { case (byte)PictureTypeEnum.Front: imageFileName = userArc.IdImageA; break; case (byte)PictureTypeEnum.Back: imageFileName = userArc.IdImageB; break; } var image = await uploadPicService.LoadImage(userArc, type, imageFileName); if (image == null) { return(NotFound()); } return(File(image, "image/jpeg")); }
private void AddScanRecordAndUpdateUserKycStatus(ArcScanRecord record, UserArc userArc, RemitRecord remitRecord) { using var transaction = dbContext.Database.BeginTransaction(); try { // for demo if (configuration["IsDemo"] != null && bool.Parse(configuration["IsDemo"]) == true) { var demoArcArray = configuration.GetSection("DemoArc").Get <string[]>(); if (Array.IndexOf(demoArcArray, userArc.ArcNo) > -1) { remitRecord.TransactionStatus = (short)RemitTransactionStatusEnum.SuccessfulAmlVerification; userArc.KycStatus = (short)KycStatusEnum.PASSED_KYC_FORMAL_MEMBER; } } // arcScanRecordService.AddScanRecord(record); userArc.LastArcScanRecordId = record.Id; userArc.UpdateTime = DateTime.UtcNow; dbContext.UserArc.Update(userArc); dbContext.SaveChanges(); remitRecord.ArcScanRecordId = record.Id; dbContext.RemitRecord.Update(remitRecord); dbContext.SaveChanges(); transaction.Commit(); return; } catch (Exception ex) { logger.LogError(ex, null); transaction.Rollback(); } }
public ActionResult <MessageModel <RemitRecordDTO> > GetRemitRecordById([FromRoute, SwaggerParameter("交易紀錄id", Required = true)] long id) { var userId = long.Parse(User.FindFirstValue("id")); UserArc userArc = userService.GetUserArcById(userId); RemitRecord record = remitRecordService.GetRemitRecordById(id); if (record != null && record.UserId != userId) { return(Unauthorized(new MessageModel <RemitRecordDTO> { Status = (int)HttpStatusCode.Unauthorized, Success = false, Msg = NOT_AUTHORIZED })); } List <ReceiveBank> banks = bankService.GetReceiveBanks(); ReceiveBank bank = banks.Find(bank => bank.Id == record.Beneficiary.ReceiveBankId); RemitRecordDTO remitRecordDTO = _mapper.Map <RemitRecordDTO>(record); remitRecordDTO.BankEnName = bank.EnName; remitRecordDTO.BankTwName = bank.TwName; remitRecordDTO.BankVietName = bank.VietName; return(Ok(new MessageModel <RemitRecordDTO>() { Data = remitRecordDTO })); }
public bool CheckIfKYCPassed(UserArc userArc) { if (userArc != null && userArc.KycStatus == (short)KycStatusEnum.PASSED_KYC_FORMAL_MEMBER) { return(true); } return(false); }
private string CheckSignatureFileExistence(UserArc userArc, string filename) { if (!uploadPicService.CheckUploadFileExistence(userArc, PictureTypeEnum.Signature, filename).Result) { return("Signature file does not exist!"); } return(null); }
private string CheckPhotoFileExistence(UserArc userArc, string filename) { if (!uploadPicService.CheckUploadFileExistence(userArc, PictureTypeEnum.Instant, filename).Result) { return("Photo file does not exist!"); } return(null); }
public ActionResult <MessageModel <RemitRecordDTO> > ApplyRemitRecord([FromBody] RemitRequest remitRequest, [FromRoute, SwaggerParameter("草稿匯款的id", Required = true)] int id) { if (!ModelState.IsValid) { return(BadRequest()); } // KYC passed? var userId = long.Parse(User.FindFirstValue("id")); UserArc userArc = userService.GetUserArcById(userId); if (!helper.CheckIfKYCPassed(userArc)) { return(BadRequest(new MessageModel <RemitRecordDTO> { Status = (int)HttpStatusCode.BadRequest, Success = false, Msg = KYC_NOT_PASSED })); } // get draft remit RemitRecord record = remitRecordService.GetRemitRecordById(id); if (record == null || record.TransactionStatus != (short)RemitTransactionStatusEnum.Draft) { return(BadRequest(new MessageModel <RemitRecordDTO> { Status = (int)HttpStatusCode.BadRequest, Success = false, Msg = "This Draft Remit doesn't exit or wrong status" })); } string validationResult = helper.ValidateFormalRemitRequestAndUpdateRemitRecord(remitRequest, record, userArc, remitRequest.Country ?? "TW"); if (validationResult != null) { return(BadRequest(new MessageModel <RemitRecordDTO> { Status = (int)HttpStatusCode.BadRequest, Success = false, Msg = validationResult })); } DateTime now = DateTime.UtcNow; RemitRecord modifiedRecord = remitRecordService.ModifyRemitRecord(record, now); RemitRecordDTO recordDTO = _mapper.Map <RemitRecordDTO>(modifiedRecord); // 系統掃ARC No. BackgroundJob.Enqueue(() => remitRecordService.SystemVerifyArcForRemitProcess(modifiedRecord, userId)); return(Ok(new MessageModel <RemitRecordDTO> { Data = recordDTO })); }
public UserArc UpdateUserArc(UserArc modifyUserArc, UserArc originalUserArc) { dbContext.Entry(originalUserArc).CurrentValues.SetValues(modifyUserArc); dbContext.Entry(originalUserArc).Property(x => x.UserId).IsModified = false; dbContext.Entry(originalUserArc).Property(x => x.CreateTime).IsModified = false; originalUserArc.UpdateTime = DateTime.UtcNow; dbContext.SaveChanges(); return(modifyUserArc); }
public ActionResult <MessageModel <RemitRecordDTO> > CreateDraftRemitRecord([FromBody] DraftRemitRequest draftRemitRequest) { if (!ModelState.IsValid) { var errors = ModelState.Select(x => x.Value.Errors) .Where(y => y.Count > 0) .ToList(); return(BadRequest(new MessageModel <RemitRecordDTO> { Status = (int)HttpStatusCode.BadRequest, Success = false, Msg = string.Join(",", errors) })); } // KYC passed? var userId = long.Parse(User.FindFirstValue("id")); UserArc userArc = userService.GetUserArcById(userId); if (!helper.CheckIfKYCPassed(userArc)) { return(BadRequest(new MessageModel <RemitRecordDTO> { Status = (int)HttpStatusCode.BadRequest, Success = false, Msg = KYC_NOT_PASSED })); } // Get draft RemitRecord draftRemitRecord = remitRecordService.GetDraftRemitRecordByUserArc(userArc); if (draftRemitRecord != null) { remitRecordService.DeleteRmitRecord(draftRemitRecord); } draftRemitRecord = new RemitRecord(); string error = helper.CheckAndSetDraftRemitProperty(userArc, draftRemitRecord, draftRemitRequest, draftRemitRequest.Country ?? "TW"); if (error != null) { return(BadRequest(new MessageModel <RemitRecordDTO> { Status = (int)HttpStatusCode.BadRequest, Success = false, Msg = error })); } draftRemitRecord = remitRecordService.CreateRemitRecordByUserArc(userArc, draftRemitRecord, PayeeTypeEnum.Bank); return(Ok(new MessageModel <RemitRecordDTO> { Data = _mapper.Map <RemitRecordDTO>(draftRemitRecord) })); }
public bool ReigsterUser(User user, UserArc userArc, UserRegisterType userRegisterType) { dbContext.User.Update(user); dbContext.UserArc.Update(userArc); dbContext.UserRegisterType.Update(userRegisterType); dbContext.SaveChanges(); return(true); }
public List <RemitRecord> GetOngoingRemitRecordsByUserArc(UserArc userArc) { short[] completedStatus = { (short)RemitTransactionStatusEnum.Complete, (short)RemitTransactionStatusEnum.FailedVerified, (short)RemitTransactionStatusEnum.OtherError, }; List <short> completedStatusList = completedStatus.ToList(); return(dbContext.RemitRecord.Where <RemitRecord>(record => record.UserId == userArc.UserId && !completedStatusList.Contains(record.TransactionStatus)).ToList()); }
public async Task <bool> CheckUploadFileExistence(UserArc userArc, PictureTypeEnum typeEnum, String imageFileUri) { String[] imageUriArray = imageFileUri.Split('/'); String imageFileName = WebUtility.UrlDecode(imageUriArray[imageUriArray.Length - 1]); BlobContainerClient blobContainer = await GetOrCreateCloudBlobContainer(GetUploadPicContainerName(), PublicAccessType.None); BlobClient imageBlob = blobContainer.GetBlobClient(imageFileName); bool isExist = await imageBlob.ExistsAsync(); return(isExist); }
public async Task SystemVerifyArcForRegisterProcess(long userId) { UserArc userArc = GetUserArcById(userId); if (userArc.ArcIssueDate == null || userArc.ArcExpireDate == null) { logger.LogError("ARC data error"); throw new Exception("ARC Data not sufficient"); } ArcValidationResult arcValidationResult = arcValidationTask.Validate(workingRootPath, userArc.ArcNo, ((DateTime)userArc.ArcIssueDate).ToString("yyyyMMdd"), ((DateTime)userArc.ArcExpireDate).ToString("yyyyMMdd"), userArc.BackSequence).Result; logger.LogInformation("IsSuccessful:{1}", arcValidationResult.IsSuccessful); logger.LogInformation("result:{1}", arcValidationResult.Result); if (arcValidationResult.IsSuccessful) { ArcScanRecord record = new ArcScanRecord() { ArcStatus = (short)SystemArcVerifyStatusEnum.PASS, ScanTime = DateTime.UtcNow, Description = arcValidationResult.Result, Event = (byte)ArcScanEvent.Register }; userArc.KycStatus = (short)KycStatusEnum.ARC_PASS_VERIFY; // for demo if (configuration["IsDemo"] != null && bool.Parse(configuration["IsDemo"]) == true) { userArc.KycStatus = (short)KycStatusEnum.AML_PASS_VERIFY; } // userArc.KycStatusUpdateTime = DateTime.UtcNow; AddScanRecordAndUpdateUserKycStatus(record, userArc); // send mail await SendMailForRegisterArc(true, receivers, userId); } else { ArcScanRecord record = new ArcScanRecord() { ArcStatus = (short)SystemArcVerifyStatusEnum.FAIL, ScanTime = DateTime.UtcNow, Description = arcValidationResult.Result, Event = (byte)ArcScanEvent.Register }; userArc.KycStatus = (short)KycStatusEnum.FAILED_KYC; userArc.KycStatusUpdateTime = DateTime.UtcNow; AddScanRecordAndUpdateUserKycStatus(record, userArc); // send mail await SendMailForRegisterArc(false, receivers, userId); } }
public async Task SystemVerifyArcForRemitProcess(RemitRecord remitRecord, long userId) { UserArc userArc = userService.GetUserArcById(userId); if (userArc.ArcIssueDate == null || userArc.ArcExpireDate == null) { throw new Exception("ARC Data not sufficient"); } ArcValidationResult arcValidationResult = arcValidationTask.Validate(workingRootPath, userArc.ArcNo, ((DateTime)userArc.ArcIssueDate).ToString("yyyyMMdd"), ((DateTime)userArc.ArcExpireDate).ToString("yyyyMMdd"), userArc.BackSequence).Result; if (arcValidationResult.IsSuccessful) { ArcScanRecord record = new ArcScanRecord() { ArcStatus = (short)SystemArcVerifyStatusEnum.PASS, ScanTime = DateTime.UtcNow, Description = arcValidationResult.Result, Event = (byte)ArcScanEvent.Remit }; remitRecord.TransactionStatus = (short)RemitTransactionStatusEnum.SuccessfulArcVerification; // for demo if (configuration["IsDemo"] != null && bool.Parse(configuration["IsDemo"]) == true) { remitRecord.TransactionStatus = (short)RemitTransactionStatusEnum.SuccessfulAmlVerification; } // AddScanRecordAndUpdateUserKycStatus(record, userArc, remitRecord); // send mail await SendMailForRemitArc(true, receivers, userId); } else { ArcScanRecord record = new ArcScanRecord() { ArcStatus = (short)SystemArcVerifyStatusEnum.FAIL, ScanTime = DateTime.UtcNow, Description = arcValidationResult.Result, Event = (byte)ArcScanEvent.Remit }; remitRecord.TransactionStatus = (short)RemitTransactionStatusEnum.FailedVerified; userArc.KycStatus = (short)KycStatusEnum.FAILED_KYC; userArc.KycStatusUpdateTime = DateTime.UtcNow; AddScanRecordAndUpdateUserKycStatus(record, userArc, remitRecord); // send mail await SendMailForRemitArc(false, receivers, userId); // push notification await notificationService.SaveAndSendNotification((int)userId, "Unsuccessful Remit", "You do not pass The KYC procedure", "en-US"); } }
public async Task <Stream> LoadImage(UserArc userArc, byte imageType, string imageFileUri) { String [] imageUriArray = imageFileUri.Split('/'); String imageFileName = WebUtility.UrlDecode(imageUriArray[imageUriArray.Length - 1]); BlobContainerClient blobContainer = await GetOrCreateCloudBlobContainer(GetUploadPicContainerName(), PublicAccessType.None); BlobClient imageBlob = blobContainer.GetBlobClient(imageFileName); if (!imageBlob.Exists()) { return(null); } return(await imageBlob.OpenReadAsync()); }
public void UpdatePicFileNameOfUserInfo(UserArc userArc, PictureTypeEnum pictureType, String fileName) { switch (pictureType) { case PictureTypeEnum.Front: userArc.IdImageA = fileName; break; case PictureTypeEnum.Back: userArc.IdImageB = fileName; break; } dbContext.UserArc.Update(userArc); dbContext.SaveChanges(); }
public async Task <Stream> LoadImage(UserArc userArc, byte imageType, string imageFileName) { string mainFolder = imageType switch { 0 => ((PictureTypeEnum)imageType).ToString().ToLower(), 1 => ((PictureTypeEnum)imageType).ToString().ToLower(), 2 => ((PictureTypeEnum)imageType).ToString().ToLower(), 3 => ((PictureTypeEnum)imageType).ToString().ToLower(), _ => PictureTypeEnum.Other.ToString().ToLower(), }; string folder = mainFolder + Path.DirectorySeparatorChar + userArc.UserId; DirectoryInfo directoryInfo = folderHandler.CreateFolder(workingRootPath, folder); var filePath = Path.Combine(directoryInfo.FullName, imageFileName); return(System.IO.File.OpenRead(filePath)); }
public RemitRecord CreateRemitRecordByUserArc(UserArc userArc, RemitRecord remitRecord, PayeeTypeEnum payeeTypeEnum) { remitRecord.UserId = userArc.UserId; remitRecord.ArcName = userArc.ArcName; remitRecord.ArcNo = userArc.ArcNo; remitRecord.PayeeType = (byte)payeeTypeEnum; dbContext.RemitRecord.Add(remitRecord); dbContext.SaveChanges(); dbContext.Entry(remitRecord).Reference(record => record.Beneficiary).Query() .Include(Beneficiary => Beneficiary.PayeeRelation) .Load(); dbContext.Entry(remitRecord).Reference(record => record.ToCurrency).Load(); return(remitRecord); }
public string CheckAndSetDraftRemitProperty(UserArc userArc, RemitRecord remitRecord, DraftRemitRequest draftRemitRequest, String country) { string error = null; if (draftRemitRequest.FromAmount != null) { error = CheckIfAmountOutOfRange(userArc.UserId, (int)draftRemitRequest.FromAmount, country); if (error != null) { return(error); } remitRecord.FromAmount = (double)draftRemitRequest.FromAmount; } if (draftRemitRequest.BeneficiaryId != null) { error = CheckBenificiarExistence((int)draftRemitRequest.BeneficiaryId); if (error != null) { return(error); } remitRecord.BeneficiaryId = draftRemitRequest.BeneficiaryId; } if (draftRemitRequest.DiscountId != null) { error = CheckDiscountExistence((int)draftRemitRequest.DiscountId); if (error != null) { return(error); } remitRecord.DiscountId = draftRemitRequest.DiscountId; } if (draftRemitRequest.ToCurrencyId != null) { error = CheckCurrencyExistence((int)draftRemitRequest.ToCurrencyId); if (error != null) { return(error); } remitRecord.ToCurrencyId = draftRemitRequest.ToCurrencyId; } return(null); }
public bool ChangeKycStatusByUserId(KycStatusEnum kycStatus, long userId) { User user = dbContext.User.Where(user => user.Id == userId).FirstOrDefault(); UserArc userArc = dbContext.UserArc.Where(userArc => userArc.UserId == userId).FirstOrDefault(); if (user == null || userArc == null) { logger.LogError("userId {userId} does not exists", userId); return(false); } userArc.KycStatus = (short)kycStatus; userArc.KycStatusUpdateTime = DateTime.UtcNow; dbContext.SaveChanges(); return(true); }
public async Task <bool> AddNewUserInfo(UserRegisterType loginUser) { using var transaction = dbContext.Database.BeginTransaction(); try { var user = new User(); await dbContext.User.AddAsync(user); dbContext.SaveChanges(); var userArc = new UserArc() { UserId = user.Id }; await dbContext.UserArc.AddAsync(userArc); dbContext.SaveChanges(); var userRegisterType = new UserRegisterType() { UserId = user.Id, AuthPlatformId = loginUser.AuthPlatformId, RegisterType = loginUser.RegisterType, Email = loginUser.Email, Name = loginUser.Name }; await dbContext.UserRegisterType.AddAsync(userRegisterType); dbContext.SaveChanges(); // Commit transaction if all commands succeed, transaction will auto-rollback // when disposed if either commands fails transaction.Commit(); return(true); } catch (Exception ex) { logger.LogError(ex, null); transaction.Rollback(); return(false); } }
public ActionResult <MessageModel <Object> > ChangeUserKyc([FromBody] KycRequest kycRequest, [FromRoute, SwaggerParameter("使用者ID", Required = true)] long userId) { UserArc userArc = userService.GetUserArcById(userId); if (userArc == null) { return(BadRequest(new MessageModel <Object> { Status = (int)HttpStatusCode.BadRequest, Success = false, Msg = "User does not exist" }));; } var result = new MessageModel <Object> { Status = (int)HttpStatusCode.BadRequest, Success = false, Msg = "Fail to Operate" }; if (userService.ChangeKycStatusByUserId((KycStatusEnum)kycRequest.KycStatus, userId)) { if ((KycStatusEnum)kycRequest.KycStatus == KycStatusEnum.PASSED_KYC_FORMAL_MEMBER) { notificationService.SaveAndSendNotification((int)userId, "Successful Registration", "Your registration have been confirmed", "en-US"); } if ((KycStatusEnum)kycRequest.KycStatus == KycStatusEnum.FAILED_KYC) { notificationService.SaveAndSendNotification((int)userId, "Unsuccessful Registration", "You do not pass The KYC procedure", "en-US"); } result.Status = (int)HttpStatusCode.OK; result.Success = true; result.Msg = "Successful Operation"; return(Ok(result)); } return(BadRequest(result)); }
public async Task AddArcToList(string userId, int id) { var arc = this.dbContext.Arcs.Find(id); if (arc == null) { throw new KeyNotFoundException("Arc with given id does not exist."); } if (arc.UsersArcs.Any(ua => ua.UserId == userId)) { throw new InvalidOperationException("User has already added given arc to their list."); } var userArc = new UserArc { UserId = userId, Arc = arc }; arc.UsersArcs.Add(userArc); await this.dbContext.SaveChangesAsync(); }
public async Task <string> SavePic(UserArc userArc, byte imageType, IFormFile image) { string mainFolder = imageType switch { 0 => ((PictureTypeEnum)imageType).ToString().ToLower(), 1 => ((PictureTypeEnum)imageType).ToString().ToLower(), 2 => ((PictureTypeEnum)imageType).ToString().ToLower(), 3 => ((PictureTypeEnum)imageType).ToString().ToLower(), _ => PictureTypeEnum.Other.ToString().ToLower(), }; string resultFileName = imageType + "_" + userArc.ArcNo + "_" + DateTimeOffset.Now.ToUnixTimeSeconds().ToString(); string folder = mainFolder + Path.DirectorySeparatorChar + userArc.UserId; DirectoryInfo directoryInfo = folderHandler.CreateFolder(workingRootPath, folder); var filePath = Path.Combine(directoryInfo.FullName, resultFileName); using (var stream = System.IO.File.Create(filePath)) { await image.CopyToAsync(stream); } return(resultFileName); }
public RemitRecord GetDraftRemitRecordByUserArc(UserArc userArc) { List <RemitRecord> onGogingRemitRecords = GetOngoingRemitRecordsByUserArc(userArc); return(onGogingRemitRecords.Find(record => record.TransactionStatus == (short)RemitTransactionStatusEnum.Draft)); }
public string ValidateFormalRemitRequestAndUpdateRemitRecord(RemitRequest remitRequest, RemitRecord remitRecord, UserArc userArc, String country) { string error = null; // check ToCurrency error = CheckCurrencyExistence(remitRequest); if (error != null) { return(error); } remitRecord.FeeType = remitRequest.FeeType; remitRecord.Fee = remitRequest.Fee; remitRecord.ToCurrencyId = remitRequest.ToCurrencyId; // check amount error = CheckIfAmountOutOfRange(userArc.UserId, remitRequest.FromAmount, "TW"); if (error != null) { return(error); } ExchangeRate applyExchangeRate = exchangeRateService.GetExchangeRateByCurrencyName(remitRequest.ToCurrency); remitRecord.FromAmount = remitRequest.FromAmount; remitRecord.ApplyExchangeRate = applyExchangeRate.Rate; remitRecord.FromCurrencyId = currencyService.GetCurrencyByCountry(country)[0].Id; // check Beneficiary error = CheckBenificiarExistence(remitRequest.BeneficiaryId); if (error != null) { return(error); } remitRecord.BeneficiaryId = remitRequest.BeneficiaryId; // check uploaded picture error = CheckPhotoFileExistence(userArc, remitRecord.RealTimePic); if (error != null) { return(error); } error = CheckSignatureFileExistence(userArc, remitRecord.ESignature); if (error != null) { return(error); } // check discount if (remitRequest.DiscountId != null) { error = CheckDiscountExistence(remitRequest); if (error != null) { return(error); } remitRecord.DiscountId = remitRequest.DiscountId; remitRecord.DiscountAmount = remitRequest.DiscountAmount; } remitRecord.TransactionStatus = (short)RemitTransactionStatusEnum.WaitingArcVerifying; return(error); }