Beispiel #1
0
        public MessageModel <RemitSettingDTO> GetCurrencyInfo([FromRoute, SwaggerParameter("國家 e.g. TW ", Required = true)] string country)
        {
            Logger.LogInformation(country);
            BussinessUnitRemitSetting setting    = remitSettingService.GetRemitSettingByCountry(country.ToUpper());
            RemitSettingDTO           settingDTO = _mapper.Map <RemitSettingDTO>(setting);

            return(new MessageModel <RemitSettingDTO>
            {
                Data = settingDTO
            });
        }
Beispiel #2
0
 public bool AddRemitSetting(BussinessUnitRemitSetting remitSetting)
 {
     try
     {
         dbContext.BussinessUnitRemitSetting.Add(remitSetting);
         dbContext.SaveChanges();
         return(true);
     }
     catch (Exception ex)
     {
         logger.LogDebug(ex.Message);
     }
     return(false);
 }
Beispiel #3
0
 public bool ModifyRemitSetting(BussinessUnitRemitSetting modifyRemitSetting)
 {
     try
     {
         BussinessUnitRemitSetting remitSetting = dbContext.BussinessUnitRemitSetting.Single(x => x.Id == modifyRemitSetting.Id);
         dbContext.Entry(remitSetting).CurrentValues.SetValues(modifyRemitSetting);
         dbContext.SaveChanges();
         return(true);
     }
     catch (Exception ex)
     {
         logger.LogDebug(ex.Message);
     }
     return(false);
 }
Beispiel #4
0
 public bool DeleteRemitSetting(long id)
 {
     try
     {
         BussinessUnitRemitSetting remitSetting = dbContext.BussinessUnitRemitSetting.Single(x => x.Id == id);
         if (remitSetting != null)
         {
             dbContext.BussinessUnitRemitSetting.Remove(remitSetting);
             dbContext.SaveChanges();
             return(true);
         }
     }
     catch (Exception ex)
     {
         logger.LogDebug(ex.Message);
     }
     return(false);
 }
Beispiel #5
0
        public MessageModel <EditRemitSettingDTO> AddRemitSetting(AddRemitSettingRequest request)
        {
            BussinessUnitRemitSetting rmitSetting = new BussinessUnitRemitSetting
            {
                Country  = request.Country,
                RemitMin = request.RemitMin,
                RemitMax = request.RemitMax,
            };
            bool result = remitSettingService.AddRemitSetting(rmitSetting);
            EditRemitSettingDTO rmitSettingDTO = mapper.Map <EditRemitSettingDTO>(rmitSetting);

            return(new MessageModel <EditRemitSettingDTO>
            {
                Success = result,
                Msg = result ? "" : "Add Fail",
                Data = rmitSettingDTO,
            });
        }
Beispiel #6
0
        public MessageModel <EditRemitSettingDTO> ModifyRemitSetting([FromRoute, SwaggerParameter("id,可從/remitsetting取得", Required = true)] int id, [FromBody] ModifyRemitSettingRequest request)
        {
            BussinessUnitRemitSetting rmitSetting = new BussinessUnitRemitSetting
            {
                Id       = id,
                Country  = request.Country,
                RemitMin = request.RemitMin,
                RemitMax = request.RemitMax,
            };
            bool result = remitSettingService.ModifyRemitSetting(rmitSetting);
            EditRemitSettingDTO rmitSettingDTO = mapper.Map <EditRemitSettingDTO>(rmitSetting);

            return(new MessageModel <EditRemitSettingDTO>
            {
                Success = result,
                Msg = result ? "" : "Modify Fail",
                Data = rmitSettingDTO
            });
        }
        public RemitAvailableAmountSumVo QueryRemitAvailableAmount(long userId, string country)
        {
            BussinessUnitRemitSetting setting = _context.BussinessUnitRemitSetting.Where(setting => setting.Country.Equals(country.ToUpper())).FirstOrDefault();
            var nowMonth = DateTime.UtcNow.Month;
            var nowYear  = DateTime.UtcNow.Year;

            var monthlyAvailableAmountList = from u in _context.UserArc.Where(userArc => userArc.UserId == userId)
                                             join r in _context.RemitRecord.Where(record => record.UserId == userId) on u.UserId equals r.UserId
                                             where (r.TransactionStatus > 0 && ((DateTime)r.FormalApplyTime).Month == nowMonth) ||
                                             (r.TransactionStatus >= (short)RemitTransactionStatusEnum.Paid && ((DateTime)r.PaymentTime).Month == nowMonth) ||
                                             (r.TransactionStatus > 0 && r.TransactionStatus < (short) RemitTransactionStatusEnum.Paid && ((DateTime) r.FormalApplyTime).Month == nowMonth - 1)
                                             group r by(r.UserId) into g
                                             select new {
                UserId = g.Key,
                MonthlyAvailableRemitAmount = (int)(setting.MonthlyMax - g.Sum(ele => ele.FromAmount))
            };
            var yearlyAvailableAmountList = from u in _context.UserArc.Where(userArc => userArc.UserId == userId)
                                            join r in _context.RemitRecord.Where(record => record.UserId == userId) on u.UserId equals r.UserId
                                            where (r.TransactionStatus > 0 && ((DateTime)r.FormalApplyTime).Year == nowYear) ||
                                            (r.TransactionStatus >= (short)RemitTransactionStatusEnum.Paid && ((DateTime)r.PaymentTime).Year == nowYear) ||
                                            (r.TransactionStatus > 0 && r.TransactionStatus < (short) RemitTransactionStatusEnum.Paid && ((DateTime) r.FormalApplyTime).Year == nowYear - 1)
                                            group r by(r.UserId) into g
                                            select new
            {
                UserId = g.Key,
                YearlyAvailableRemitAmount = (int)(setting.YearlyMax - g.Sum(ele => ele.FromAmount))
            };

            var monthlyAvailableAmount     = monthlyAvailableAmountList.FirstOrDefault();
            var yearlyAvailableRemitAmount = yearlyAvailableAmountList.FirstOrDefault();
            var result = new RemitAvailableAmountSumVo
            {
                UserId = userId,
                MonthlyAvailableRemitAmount = monthlyAvailableAmount == null ? setting.MonthlyMax : monthlyAvailableAmount.MonthlyAvailableRemitAmount,
                YearlyAvailableRemitAmount  = yearlyAvailableRemitAmount == null ? setting.YearlyMax : yearlyAvailableRemitAmount.YearlyAvailableRemitAmount
            };

            return(result);
        }
        private string CheckIfAmountOutOfRange(long userId, int amount, string country)
        {
            BussinessUnitRemitSetting remitSetting = remitSettingService.GetRemitSettingByCountry(country);

            if (remitSetting == null)
            {
                return("no remit setting for {country}");
            }
            if (amount < remitSetting.RemitMin || amount > remitSetting.RemitMax)
            {
                return(OUT_OF_RANGE);
            }
            RemitAvailableAmountSumVo amountSumVo = remitRecordQueryRepositories.QueryRemitAvailableAmount(userId, country);

            if (amountSumVo.MonthlyAvailableRemitAmount != null && amount > amountSumVo.MonthlyAvailableRemitAmount)
            {
                return(OUT_OF_MONTHLY_MAX);
            }
            if (amountSumVo.YearlyAvailableRemitAmount != null && amount > amountSumVo.YearlyAvailableRemitAmount)
            {
                return(OUT_OF_YEARLY_MAX);
            }
            return(null);
        }