Beispiel #1
0
        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 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);
        }