Esempio n. 1
0
        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
            }));
        }
Esempio n. 2
0
        public ActionResult <MessageModel <List <RemitRecordDTO> > > GetRemitRecords()
        {
            var userId = long.Parse(User.FindFirstValue("id"));
            List <RemitRecord> remitRecords = remitRecordService.GetRemitRecordsByUserId(userId);

            remitRecords.RemoveAll(remitRecord => remitRecord.TransactionStatus == (short)RemitTransactionStatusEnum.Draft);

            List <ReceiveBank> banks = bankService.GetReceiveBanks();

            List <RemitRecordDTO> remitRecordDTOs = new List <RemitRecordDTO>();

            foreach (RemitRecord record in  remitRecords)
            {
                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;
                remitRecordDTOs.Add(remitRecordDTO);
            }

            return(Ok(new MessageModel <List <RemitRecordDTO> >
            {
                Data = remitRecordDTOs
            }));
        }
Esempio n. 3
0
        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
            }));
        }