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 })); }
private string CheckDiscountExistence(RemitRequest remitRequest) { Discount discount = discountService.GetDoscountById((long)remitRequest.DiscountId); if (discount == null) { return("discount does not exist!"); } remitRequest.DiscountAmount = discount.Value; return(null); }
private string CheckCurrencyExistence(RemitRequest remitRequest) { CurrencyCode currency = currencyService.GetCurrencyById(remitRequest.ToCurrencyId); if (currency == null) { return("currency does not exist!"); } remitRequest.ToCurrency = currency.CurrencyName; remitRequest.FeeType = currency.FeeType; remitRequest.Fee = currency.Fee; return(null); }
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); }