public static object GenerateTrnObject(string strTradeDate, string strCtpy, string strPortfolio, string strCurrencyPair , string strContractCcy, string strCounterCcy, string strSpotRate , string strBSNear, string strSetDateNear, string strSwapPointNear , string strContractAmtNear, string strCounterAmtNear , string strBSFar, string strSetDateFar, string strSwapPointFar , string strContractAmtFar, string strCounterAmtFar, string strSpotDate, string strRemark, string strProductId1, bool settleFlag, bool blnIsSubmit) { try { DA_TRN TrnInfo1 = DealUIP.GenerateFXSwapTransactionObject1(SessionInfo, strTradeDate, strCtpy, strPortfolio, strCurrencyPair , strContractCcy, strCounterCcy, strSpotRate , strBSNear, strSetDateNear, strSwapPointNear, strContractAmtNear, strCounterAmtNear, strSpotDate, strRemark, settleFlag, strProductId1); DA_TRN TrnInfo2 = DealUIP.GenerateFXSwapTransactionObject2(SessionInfo, strTradeDate, strCtpy, strPortfolio, strCurrencyPair , strContractCcy, strCounterCcy, strSpotRate , strBSFar, strSetDateFar, strSwapPointFar , strContractAmtFar, strCounterAmtFar, strSpotDate, strRemark, settleFlag, TrnInfo1.VERSION); object PCESCEObject; CheckFXSpotLimits(blnIsSubmit, TrnInfo1, TrnInfo2, out PCESCEObject); return(new { Result = "OK", record = JsonConvert.SerializeObject(TrnInfo1, new IsoDateTimeConverter()), record2 = JsonConvert.SerializeObject(TrnInfo2, new IsoDateTimeConverter()), pcesce = PCESCEObject, Message = "" }); } catch (Exception ex) { return(new { Result = "ERROR", Message = ex.Message }); } }
public static object GetEditByID(Guid id) { try { DA_TRN trn = DealUIP.GetByID(id); var query = new { ID = trn.ID, TradeDate = trn.TRADE_DATE.HasValue ? trn.TRADE_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty, EffectDate = trn.START_DATE.HasValue ? trn.START_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty, MaturityDate = trn.MATURITY_DATE.HasValue ? trn.MATURITY_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty, Counterparty = trn.CTPY_ID.ToString(), Portfolio = trn.PORTFOLIO_ID.HasValue ? trn.PORTFOLIO_ID.Value.ToString() : "-1", Instrument = trn.PORTFOLIO_ID.HasValue ? trn.INSTRUMENT_ID.Value.ToString() : "-1", Notional1 = Math.Abs(trn.FIRST.NOTIONAL.Value), Notional2 = Math.Abs(trn.SECOND.NOTIONAL.Value), FlagFixed1 = trn.FIRST.FLAG_FIXED.HasValue ? (trn.FIRST.FLAG_FIXED.Value ? "1" : "0") : "0", FixAmt1 = trn.FIRST.FIRSTFIXINGAMT, Rate1 = trn.FIRST.RATE, Feq1 = trn.FIRST.FREQTYPE_ID.HasValue ? trn.FIRST.FREQTYPE_ID.Value.ToString() : string.Empty, FlagFixed2 = trn.SECOND.FLAG_FIXED.HasValue ? (trn.SECOND.FLAG_FIXED.Value ? "1" : "0") : "0", FixAmt2 = trn.SECOND.FIRSTFIXINGAMT, Rate2 = trn.SECOND.RATE, Feq2 = trn.SECOND.FREQTYPE_ID.HasValue ? trn.SECOND.FREQTYPE_ID.Value.ToString() : string.Empty, CCY1 = trn.FIRST.CCY_ID, CCY2 = trn.SECOND.CCY_ID }; return(new { Result = "OK", record = query }); } catch (Exception ex) { return(new { Result = "ERROR", Message = ex.Message }); } }
public static object SubmitFXSwapDeal(SessionInfo sessioninfo , DA_TRN trn1 , DA_TRN trn2 , string strOverApprover , string strOverComment , string strProductId1 , string strProductId2) { try { DealBusiness _dealBusiness = new DealBusiness(); string strDealNO1 = _dealBusiness.SubmitFXDeal(sessioninfo , trn1 , strOverApprover , strOverComment , strProductId1); trn2.INT_DEAL_NO = strDealNO1; string strDealNO2 = _dealBusiness.SubmitFXDeal(sessioninfo , trn2 , strOverApprover , strOverComment , strProductId2 ); return(new { Result = "OK", Message = strDealNO1 }); } catch (Exception ex) { return(new { Result = "ERROR", Message = ex.Message }); } }
public static object GetEditByID(Guid id) { try { DA_TRN trn = DealUIP.GetByID(id); MA_INSTRUMENT ins = InstrumentUIP.GetByID(SessionInfo, trn.MA_INSRUMENT.ID); var query = new { ID = trn.ID, TradeDate = trn.TRADE_DATE.HasValue ? trn.TRADE_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty, SpotDate = trn.SPOT_DATE.HasValue ? trn.SPOT_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty, MaturityDate = trn.MATURITY_DATE.HasValue ? trn.MATURITY_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty, Counterparty = trn.CTPY_ID.ToString(), Portfolio = trn.PORTFOLIO_ID.ToString(), Instrument = trn.INSTRUMENT_ID.ToString(), BuySell = trn.FLAG_BUYSELL, CCY1 = trn.FIRST.CCY_ID.ToString(), SpotRate = trn.FIRST.RATE - (trn.FIRST.SWAP_POINT.HasValue ? trn.FIRST.SWAP_POINT : 0), SwapPoint = trn.FIRST.SWAP_POINT, Remark = trn.REMARK, flag_settle = trn.FLAG_SETTLE, Notional1 = Math.Abs(trn.FIRST.NOTIONAL.Value), Notional2 = Math.Abs(trn.SECOND.NOTIONAL.Value) }; return(new { Result = "OK", record = query, CCY = new { CURRENCY1 = ins.MA_CURRENCY.LABEL, CURRENCY2 = ins.MA_CURRENCY2.LABEL, CURRENCYID1 = ins.MA_CURRENCY.ID, CURRENCYID2 = ins.MA_CURRENCY2.ID, FLAG_MULTIPLY = ins.FLAG_MULTIPLY } }); } catch (Exception ex) { return(new { Result = "ERROR", Message = ex.Message }); } }
public List <LimitCheckModel> CheckAllSET(DateTime ProcessingDate, DA_TRN trn, Guid ExcludeID1, Guid ExcludeID2) { CounterpartyBusiness _counterpartyBusiness = new CounterpartyBusiness(); List <LimitCheckModel> results = GetSCEByCriteria(ProcessingDate, trn.CTPY_ID, trn.PRODUCT_ID.Value, "", ExcludeID1, ExcludeID2); //Get group exposure MA_COUTERPARTY ctpy = _counterpartyBusiness.GetCounterpartyAll().FirstOrDefault(p => p.ID == trn.CTPY_ID); if (ctpy != null && ctpy.GROUP_CTPY_ID != null) { var group = GetSCEByCriteria(ProcessingDate, ctpy.GROUP_CTPY_ID.Value, trn.PRODUCT_ID.Value, "", ExcludeID1, ExcludeID2); results = results.Union(group).ToList(); } //Get temp limit //Look for temp limit when all conditions meet // 1. Transaction maturity date <= Temp limit maturity date foreach (LimitCheckModel result in results) { MA_TEMP_CTPY_LIMIT temp_limit = _counterpartyBusiness.GetActiveTempByID(ProcessingDate, trn.MATURITY_DATE.Value, result.CTPY_LIMIT_ID); if (temp_limit != null) { result.TEMP_AMOUNT = temp_limit.AMOUNT; } //result.AMOUNT = result.AMOUNT + temp_limit.AMOUNT; } return(results); }
static void Main(string[] args) { PCCFConfigBusiness pccfBusiness = new PCCFConfigBusiness(); DA_TRN record = new DA_TRN(); record.ID = Guid.NewGuid(); record.ENGINE_DATE = DateTime.Now; record.STATUS_ID = new Guid("9161ED18-1298-44FA-BA7D-34522CB40D66"); record.INSTRUMENT_ID = new Guid("33F88EB3-46C0-4667-BCF6-05426321B71B"); record.PRODUCT_ID = new Guid("F85252D1-BC58-4AC6-8B56-2E228FB0A367"); record.LOG.INSERTBYUSERID = new Guid("F85252D1-BC58-4AC6-8B56-2E228FB0A367"); record.LOG.INSERTDATE = DateTime.Now; record.FIRST.CCY_ID = new Guid("825F343B-CAEA-409B-AE92-CCA2DAB3765E"); record.FIRST.FLAG_PAYREC = "R"; record.FIRST.FLAG_FIXED = false; record.SECOND.CCY_ID = new Guid("825F343B-CAEA-409B-AE92-CCA2DAB3765E"); record.SECOND.FLAG_PAYREC = "P"; record.SECOND.FLAG_FIXED = false; var temp = pccfBusiness.ValidatePCCFConfig(null, record); if (temp != null) { Console.WriteLine("PCCF:" + temp.LABEL); } else { Console.WriteLine("PCCF is not match"); } Console.WriteLine("End"); Console.ReadLine(); }
public static object GetEditByID(Guid id) { try { DA_TRN trn = DealUIP.GetByID(id); var query = new { ID = trn.ID, TradeDate = trn.TRADE_DATE.HasValue ? trn.TRADE_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty, BuySell = trn.FLAG_BUYSELL, MaturityDate = trn.MATURITY_DATE.HasValue ? trn.MATURITY_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty, EffectiveDate = trn.START_DATE.HasValue ? trn.START_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty, Counterparty = trn.CTPY_ID.ToString(), Portfolio = trn.PORTFOLIO_ID.ToString(), Instrument = trn.INSTRUMENT_ID.ToString(), Notional = Math.Abs(trn.FIRST.NOTIONAL.Value), Remark = trn.REMARK }; return(new { Result = "OK", record = query }); } catch (Exception ex) { return(new { Result = "ERROR", Message = ex.Message }); } }
public static object GenerateTrnObject(string strTradeDate, string strInstrument, string strCtpy, string strPortfolio , string strEffDate, string strMatDate , string strNotional1, string strCCY1, string strFFL1, string strFFix1, string strRate1, string strFreq1 , string strNotional2, string strCCY2, string strFFL2, string strFFix2, string strRate2, string strFreq2 , string strOverApprover, string strOverPCE, string strOverSCE, string strComment, string strRemark, string strProductId, bool blnIsSubmit) { try { DA_TRN TrnInfo = DealUIP.GenerateSwapTransactionObject(SessionInfo, strTradeDate, strInstrument, strCtpy, strPortfolio , strEffDate, strMatDate, strNotional1 , strCCY1, strFFL1, strFFix1, strRate1, strFreq1 , strNotional2, strCCY2, strFFL2, strFFix2, strRate2, strFreq2 , Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings[AppSettingName.CASHFLOW_SPAN]) , strRemark, strProductId); object PCESCEObject; CheckSwapLimits(blnIsSubmit, TrnInfo, out PCESCEObject); return(new { Result = "OK", record = JsonConvert.SerializeObject(TrnInfo, new IsoDateTimeConverter()), pcesce = PCESCEObject, Message = "" }); } catch (Exception ex) { return(new { Result = "ERROR", Message = ex.Message }); } }
public List <LimitCheckModel> CheckAllCountry(DateTime ProcessingDate, DA_TRN trn, Guid ExcludeID1, Guid ExcludeID2) { CounterpartyBusiness _counterpartyBusiness = new CounterpartyBusiness(); CountryBusiness _countryBusiness = new CountryBusiness(); List <LimitCheckModel> results = new List <LimitCheckModel>(); LimitCheckModel result; LimitCheckModel temp = new LimitCheckModel(); LimitCheckModel pce = new LimitCheckModel(); MA_COUTERPARTY ctpy = _counterpartyBusiness.GetCounterpartyAll().FirstOrDefault(p => p.ID == trn.CTPY_ID); List <LimitCheckModel> sets = GetCountrySETByCriteria(ProcessingDate, ctpy.COUNTRY_ID, "", ExcludeID1, ExcludeID2); List <LimitCheckModel> pces = GetCountryPCEByCriteria(ProcessingDate, ctpy.COUNTRY_ID, "", ExcludeID1, ExcludeID2); if (pces.Count != 1) { throw new Exception("Invalid country limit data. Please contact administrator"); } else { pce = pces.FirstOrDefault(); } MA_COUNTRY_LIMIT temp_limit = _countryBusiness.GetActiveTempByCountryID(ProcessingDate, trn.MATURITY_DATE.Value, ctpy.COUNTRY_ID); DateTime dateStart = trn.TRADE_DATE.Value; DateTime dateEnd = trn.FLAG_SETTLE.HasValue && trn.FLAG_SETTLE.Value ? trn.DA_TRN_FLOW.Max(p => p.FLOW_DATE).Value : trn.TRADE_DATE.Value; while (dateStart <= dateEnd) { result = new LimitCheckModel(); temp = sets.FirstOrDefault(p => p.FLOW_DATE == dateStart); result.COUNTRY_LABEL = pce.COUNTRY_LABEL; result.COUNTRY_ID = pce.COUNTRY_ID; result.FLAG_CONTROL = pce.FLAG_CONTROL; result.GEN_AMOUNT = pce.GEN_AMOUNT; result.TEMP_AMOUNT = temp_limit != null ? temp_limit.AMOUNT : 0; //result.AMOUNT = pce.AMOUNT + (temp_limit != null ? temp_limit.AMOUNT : 0); result.PROCESSING_DATE = pce.PROCESSING_DATE; result.EXPIRE_DATE = pce.EXPIRE_DATE; result.FLOW_DATE = dateStart; result.ORIGINAL_KK_CONTRIBUTE = pce.ORIGINAL_KK_CONTRIBUTE; if (temp != null) { result.ORIGINAL_KK_CONTRIBUTE = result.ORIGINAL_KK_CONTRIBUTE + temp.ORIGINAL_KK_CONTRIBUTE; } results.Add(result); //if (dateStart.DayOfWeek == DayOfWeek.Friday) // dateStart = dateStart.AddDays(3); //else dateStart = dateStart.AddDays(1); } return(results); }
public static object SubmitDeal(string strOverApprover, string strOverComment, string record, string strProductId) { DA_TRN TrnInfo = JsonConvert.DeserializeObject <DA_TRN>(record); return(DealUIP.SubmitFIDeal(SessionInfo , TrnInfo , strOverApprover , strOverComment , strProductId)); }
public static object SubmitDeal(string strOverApprover, string strOverComment, string record1, string record2, string strProductId1, string strProductId2) { DA_TRN TrnInfo1 = JsonConvert.DeserializeObject <DA_TRN>(record1); DA_TRN TrnInfo2 = JsonConvert.DeserializeObject <DA_TRN>(record2); return(DealUIP.SubmitFXSwapDeal(SessionInfo , TrnInfo1 , TrnInfo2 , strOverApprover , strOverComment , strProductId1 , strProductId2)); }
private static void CheckRepoLimit(Boolean blnIsSubmit, DA_TRN record, out object PCESCEObject) { try { LimitDisplayModel PCECheckRecords = DealUIP.CheckPCE(SessionInfo, record, ProductId); LimitDisplayModel CountryCheckRecords = DealUIP.CheckCountryLimit(SessionInfo, record, ProductId); PCESCEObject = ConsoLimitDisplay(blnIsSubmit, PCECheckRecords, null, CountryCheckRecords); } catch (Exception ex) { throw new Exception(ex.Message); } }
private static void CheckFXSpotLimits(Boolean blnIsSubmit, DA_TRN record, DA_TRN record2, out object PCESCEObject) { try { LimitDisplayModel PCECheckRecords = DealUIP.CheckFXSwapPCE(SessionInfo, record, record2, ProductId); LimitDisplayModel SCECheckRecords = record.FLAG_SETTLE.Value ? DealUIP.CheckFXSwapSCE(SessionInfo, record, record2, ProductId) : null; LimitDisplayModel CountryCheckRecords = DealUIP.CheckFXSwapCountryLimit(SessionInfo, record, record2, ProductId); PCESCEObject = ConsoLimitDisplay(blnIsSubmit, PCECheckRecords, SCECheckRecords, CountryCheckRecords); } catch (Exception ex) { throw new Exception(ex.Message); } }
public static object GenerateTrnObject(string strTradeDate , string strBuySell , string strInstrument , string strCtpy , string strPortfolio , string strEffectiveDate , string strMaturityDate , string strNotional , string strProductId , string strRemark , bool blnIsSubmit) { try { DA_TRN TrnInfo = DealUIP.GenerateRepoTransactionObject(SessionInfo , strTradeDate , strBuySell , strInstrument , strCtpy , strPortfolio , strEffectiveDate , strMaturityDate , strNotional , strProductId , strRemark); object PCESCEObject; CheckRepoLimit(blnIsSubmit, TrnInfo, out PCESCEObject); return(new { Result = "OK", record = JsonConvert.SerializeObject(TrnInfo, new IsoDateTimeConverter()), pcesce = PCESCEObject, Message = "" }); } catch (Exception ex) { return(new { Result = "ERROR", Message = ex.Message }); } }
private static void CheckFILimit(Boolean blnIsSubmit, DA_TRN record, out object PCESCEObject) { try { LimitDisplayModel PCECheckRecords = DealUIP.CheckPCE(SessionInfo, record, ProductId); LimitDisplayModel SCECheckRecords = null; LimitDisplayModel CountryCheckRecords = DealUIP.CheckCountryLimit(SessionInfo, record, ProductId); var flagSettle = record.FLAG_SETTLE.Value && record.NOTIONAL_THB.Value > 0; if (flagSettle) { SCECheckRecords = DealUIP.CheckSCE(SessionInfo, record, ProductId); } PCESCEObject = ConsoLimitDisplay(blnIsSubmit, PCECheckRecords, SCECheckRecords, CountryCheckRecords); } catch (Exception ex) { throw new Exception(ex.Message); } }
public static object GetEditByID(Guid id) { try { DA_TRN lastTrn1 = DealUIP.GetByID(id); DA_TRN lastTrn2 = DealUIP.GetFXSwapPair(SessionInfo, lastTrn1.INT_DEAL_NO, lastTrn1.VERSION, lastTrn1.ID); MA_INSTRUMENT ins = InstrumentUIP.GetByID(SessionInfo, lastTrn1.MA_INSRUMENT.ID); var NearLeg = lastTrn1.FLAG_NEARFAR == "N" ? lastTrn1 : lastTrn2; var FarLeg = lastTrn2.FLAG_NEARFAR == "F" ? lastTrn2 : lastTrn1; var query = new { TradeDate = lastTrn1.TRADE_DATE.HasValue ? lastTrn1.TRADE_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty, Counterparty = lastTrn1.CTPY_ID.ToString(), Portfolio = lastTrn1.PORTFOLIO_ID.ToString(), Instrument = lastTrn1.INSTRUMENT_ID.ToString(), ContractCcy = lastTrn1.FIRST.CCY_ID.ToString(), SpotDate = lastTrn1.SPOT_DATE.HasValue ? lastTrn1.SPOT_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty, SpotRate = lastTrn1.FIRST.RATE.Value - lastTrn1.FIRST.SWAP_POINT.Value, BSN = NearLeg.FLAG_BUYSELL, BSF = FarLeg.FLAG_BUYSELL, SetDateN = NearLeg.MATURITY_DATE.HasValue ? NearLeg.MATURITY_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty, SetDateF = FarLeg.MATURITY_DATE.HasValue ? FarLeg.MATURITY_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty, SwapPoitN = NearLeg.FIRST.SWAP_POINT, SwapPoitF = FarLeg.FIRST.SWAP_POINT, ContAmtN = Math.Abs(NearLeg.FIRST.NOTIONAL.Value), CountAmtN = Math.Abs(NearLeg.SECOND.NOTIONAL.Value), ContAmtF = Math.Abs(FarLeg.FIRST.NOTIONAL.Value), CountAmtF = Math.Abs(FarLeg.SECOND.NOTIONAL.Value), flag_settle = lastTrn1.FLAG_SETTLE, }; return(new { Result = "OK", record = query, productid2 = lastTrn2.ID.ToString(), CCY = new { CURRENCY1 = ins.MA_CURRENCY.LABEL, CURRENCY2 = ins.MA_CURRENCY2.LABEL, CURRENCYID1 = ins.MA_CURRENCY.ID, CURRENCYID2 = ins.MA_CURRENCY2.ID, FLAG_MULTIPLY = ins.FLAG_MULTIPLY } }); } catch (Exception ex) { return(new { Result = "ERROR", Message = ex.Message }); } }
public static object SubmitFIDeal(SessionInfo sessioninfo , DA_TRN trn , string strOverApprover , string strOverComment , string strProductId) { try { DealBusiness _dealBusiness = new DealBusiness(); string strDealNO = _dealBusiness.SubmitFIDeal(sessioninfo , trn , strOverApprover , strOverComment , strProductId); return(new { Result = "OK", Message = strDealNO }); } catch (Exception ex) { return(new { Result = "ERROR", Message = ex.Message }); } }
public static object GetEditByID(Guid id) { try { DA_TRN trn = DealUIP.GetByID(id); var query = new { ID = trn.ID, TradeDate = trn.TRADE_DATE.HasValue ? trn.TRADE_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty, BuySell = trn.FLAG_BUYSELL, MaturityDate = trn.MATURITY_DATE.HasValue ? trn.MATURITY_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty, Counterparty = trn.CTPY_ID.ToString(), Portfolio = trn.PORTFOLIO_ID.ToString(), Instrument = trn.INSTRUMENT_ID.ToString(), Notional1 = Math.Abs(trn.FIRST.NOTIONAL.Value), SettleFlag = trn.FLAG_SETTLE.HasValue ? (trn.FLAG_SETTLE.Value ? "1" : "0") : "0", Remark = trn.REMARK, Yield = trn.FIRST.RATE, Unit = trn.DA_TMBA_EXTENSION.UNIT, CPrice = trn.DA_TMBA_EXTENSION.CLEAN_PRICE, GPrice = trn.DA_TMBA_EXTENSION.GROSS_PRICE, PMarket = trn.FLAG_PCE.HasValue ? (trn.FLAG_PCE.Value ? "1" : "0") : "0", YType = trn.DA_TMBA_EXTENSION.YIELD_TYPE, Purpose = trn.DA_TMBA_EXTENSION.PURPOSE, ReportBy = trn.DA_TMBA_EXTENSION.IS_REPORT_CLEAN ? "0" : "1", Term = trn.DA_TMBA_EXTENSION.TERM.HasValue ? trn.DA_TMBA_EXTENSION.TERM.Value.ToString() : "", Rate = trn.DA_TMBA_EXTENSION.RATE.HasValue ? trn.DA_TMBA_EXTENSION.RATE.Value.ToString() : "", TBMARemark = trn.DA_TMBA_EXTENSION.REMARK, LotSize = trn.MA_INSRUMENT.LOT_SIZE }; return(new { Result = "OK", record = query }); } catch (Exception ex) { return(new { Result = "ERROR", Message = ex.Message }); } }
public MA_PCCF ValidatePCCFConfig(SessionInfo sessioninfo, DA_TRN record) { MA_PCCF val = null; bool blnResult; //enter conditions LoggingHelper.Debug("Begin validate PCCF from config"); using (EFUnitOfWork unitOfWork = new EFUnitOfWork()) { var props = record.GetType().GetProperties(); var configs = unitOfWork.MA_PCCF_CONFIGRepository.GetAll() .Where(p => p.PRODUCT_ID.Equals(record.PRODUCT_ID)) .OrderBy(p => p.PRIORITY); //bool isBond = string.Compare(unitOfWork.MA_PRODUCTRepository.GetById(record.PRODUCT_ID.Value).LABEL, ProductCode.BOND.ToString(), true) == 0; if (configs != null) { List <bool> ismatchs = new List <bool>(); object obj; foreach (MA_PCCF_CONFIG p in configs.ToList()) { ismatchs.Clear(); blnResult = false; //List<MA_CONFIG_ATTRIBUTE> atts = unitOfWork.MA_CONFIG_ATTRIBUTERepository.All().Where(t => t.PCCF_CONFIG_ID == p.ID && t.ISACTIVE == true).ToList() ; foreach (MA_CONFIG_ATTRIBUTE ca in p.MA_CONFIG_ATTRIBUTE.Where(t => t.ISACTIVE == true).ToList()) { //Fix for Tables switch (ca.TABLE) { case "DA_TRN": var sel = props.FirstOrDefault(t => t.Name.Equals(ca.ATTRIBUTE)); if (sel != null) { if (sel.GetValue(record, null).GetType() == typeof(Guid)) { switch (ca.ATTRIBUTE) { //Fix for fields case "INSTRUMENT_ID": obj = new MA_INSTRUMENT(); obj = unitOfWork.MA_INSTRUMENTRepository.GetByIDWithOutInclude(new Guid(sel.GetValue(record, null).ToString())); blnResult = ((MA_INSTRUMENT)obj).LABEL.Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase); //ismatchs.Add(blnResult); break; default: break; } } else if (sel.GetValue(record, null).GetType() == typeof(Boolean)) { blnResult = sel.GetValue(record, null).Equals(ca.VALUE == "0" ? false : true); // ismatchs.Add(fsel.GetValue(record.FIRST, null).Equals(ca.VALUE=="0" ? false : true)); } else { blnResult = sel.GetValue(record, null).ToString().Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase); //ismatchs.Add(blnResult); } } break; case "BOND_MARKET": MA_INSTRUMENT insMkt = unitOfWork.MA_INSTRUMENTRepository.GetByIDWithInsMarket(record.INSTRUMENT_ID.Value); if (insMkt.MA_BOND_MARKET != null) { blnResult = insMkt.MA_BOND_MARKET.LABEL.Equals(ca.VALUE); //ismatchs.Add(blnResult); } //else //ismatchs.Add(false); break; case "FIRST": var fsel = record.FIRST.GetType().GetProperties().FirstOrDefault(f => f.Name.Equals(ca.ATTRIBUTE)); if (fsel != null) { if (fsel.GetValue(record.FIRST, null) != null) { if (fsel.GetValue(record.FIRST, null).GetType() == typeof(Guid)) { switch (ca.ATTRIBUTE) { //Fix for fields case "CCY_ID": obj = new MA_CURRENCY(); obj = unitOfWork.MA_CURRENCYRepository.GetByID(new Guid(fsel.GetValue(record.FIRST, null).ToString())); blnResult = ((MA_CURRENCY)obj).LABEL.Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase); //ismatchs.Add(); break; default: break; } } else if (fsel.GetValue(record.FIRST, null).GetType() == typeof(Boolean)) { blnResult = fsel.GetValue(record.FIRST, null).Equals(ca.VALUE == "0" ? false : true); // ismatchs.Add(fsel.GetValue(record.FIRST, null).Equals(ca.VALUE=="0" ? false : true)); } else { blnResult = fsel.GetValue(record.FIRST, null).ToString().Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase); //ismatchs.Add(fsel.GetValue(record.FIRST, null).ToString().Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase)); } } //else ismatchs.Add(false); } break; case "SECOND": //var secprop = props.FirstOrDefault(f => f.Name.Equals("SECOND")); var ssel = record.SECOND.GetType().GetProperties().FirstOrDefault(f => f.Name.Equals(ca.ATTRIBUTE)); if (ssel != null) { if (ssel.GetValue(record.SECOND, null) != null) { if (ssel.GetValue(record.SECOND, null).GetType() == typeof(Guid)) { switch (ca.ATTRIBUTE) { //Fix for fields case "CCY_ID": obj = new MA_CURRENCY(); obj = unitOfWork.MA_CURRENCYRepository.GetByID(new Guid(ssel.GetValue(record.SECOND, null).ToString())); blnResult = ((MA_CURRENCY)obj).LABEL.Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase); //ismatchs.Add(((MA_CURRENCY)obj).LABEL.Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase)); break; default: break; } } else if (ssel.GetValue(record.SECOND, null).GetType() == typeof(Boolean)) { blnResult = ssel.GetValue(record.SECOND, null).Equals(ca.VALUE == "0" ? false : true); // ismatchs.Add(ssel.GetValue(record.SECOND, null).Equals(ca.VALUE == "0" ? false : true)); } else { blnResult = ssel.GetValue(record.SECOND, null).ToString().Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase); // ismatchs.Add(ssel.GetValue(record.SECOND, null).ToString().Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase)); } } //else ismatchs.Add(false); } break; case "COUNTERPARTY": MA_COUTERPARTY ctpy = unitOfWork.MA_COUTERPARTYRepository.GetAll().FirstOrDefault(z => z.ID == record.CTPY_ID); switch (ca.ATTRIBUTE) { case "SNAME": blnResult = ctpy.SNAME.ToUpper() == ca.VALUE.ToUpper(); break; case "CSA_TYPE": MA_CSA_AGREEMENT csa = unitOfWork.MA_CSA_AGREEMENTRepository.GetAll().FirstOrDefault(y => y.ID == record.CTPY_ID); if (csa != null && csa.MA_CSA_TYPE.LABEL.ToUpper() == ca.VALUE.ToUpper() && csa.MA_CSA_PRODUCT.FirstOrDefault(y => y.PRODUCT_ID == record.PRODUCT_ID) != null) { blnResult = true; } //else if (csa == null && ca.VALUE == "") // blnResult = true; else { blnResult = false; } break; default: break; } break; } ismatchs.Add(blnResult); //Check result -> if false then go to next config if (!blnResult) { break; } } if (ismatchs.Where(m => m.Equals(false)).Count() == 0) { val = unitOfWork.MA_PCCFRepository.GetByID(p.PCCF_ID); LoggingHelper.Debug("PCCF: " + val.LABEL); break; } else { continue; } } } else { val = null; } } LoggingHelper.Debug("End validate PCCF from config"); return(val); }
public static LimitDisplayModel CheckSwapCountryLimit(SessionInfo sessioninfo, DA_TRN trn, string strExcludeID) { DealBusiness _dealBusiness = new DealBusiness(); return(_dealBusiness.CheckSwapCountryLimit(sessioninfo, trn, strExcludeID)); }
public static LimitDisplayModel CheckFXSwapSCE(SessionInfo sessioninfo, DA_TRN trn1, DA_TRN trn2, string strExcludeID) { DealBusiness _dealBusiness = new DealBusiness(); return(_dealBusiness.CheckFXSwapSCE(sessioninfo, trn1, trn2, strExcludeID)); }
public decimal?GetPCCF(SessionInfo sessioninfo, DA_TRN trn) { try { decimal? decPCCF = null; LookupBusiness _lookupBusiness = new LookupBusiness(); PCCFConfigBusiness _pccfBusiness = new PCCFConfigBusiness(); MA_PRODUCT product = _lookupBusiness.GetProductByID(sessioninfo, trn.PRODUCT_ID.Value); ProductCode nProduct = (ProductCode)Enum.Parse(typeof(ProductCode), product.LABEL.Replace(" ", string.Empty)); MA_PCCF pccf = _pccfBusiness.ValidatePCCFConfig(sessioninfo, trn); //if (pccf == null) // throw this.CreateException(new Exception(), "Cannot find PCCF for transaction #" + trn.EXT_DEAL_NO); if (nProduct == ProductCode.BOND || nProduct == ProductCode.REPO) { InstrumentBusiness _instrumentBusiness = new InstrumentBusiness(); //------Check whether seleted bond can be used.--------- MA_INSTRUMENT ins = _instrumentBusiness.GetByID(sessioninfo, trn.INSTRUMENT_ID.Value); if (trn.MATURITY_DATE >= ins.MATURITY_DATE) { throw this.CreateException(new Exception(), "Settlement date cannot be equal or after bond maturity date."); } if (pccf == null) { throw this.CreateException(new Exception(), "Selected instrument cannot be used."); } //------------------------------------------------------- decPCCF = LimitHelper.GetPCCFValue(pccf, LimitHelper.GetYearBucket(trn.START_DATE.Value, ins.MATURITY_DATE.Value)); } else { if (pccf == null) { throw this.CreateException(new Exception(), "PCCF is not defined in the system." + "RF"); } if (nProduct == ProductCode.SWAP) { decPCCF = LimitHelper.GetPCCFValue(pccf, LimitHelper.GetYearBucket(trn.START_DATE.Value, trn.MATURITY_DATE.Value)); } else if (nProduct == ProductCode.FXSPOT) { decPCCF = pccf.DEFAULT; } else if (nProduct == ProductCode.FXFORWARD) { decPCCF = LimitHelper.GetPCCFValue(pccf, LimitHelper.GetMonthBucket(trn.START_DATE.Value, trn.MATURITY_DATE.Value)); } else if (nProduct == ProductCode.FXSWAP) { if (trn.TRADE_DATE == trn.MATURITY_DATE) { decPCCF = pccf.C0D; } else if (trn.MATURITY_DATE < trn.SPOT_DATE) { decPCCF = pccf.C1D; } else if (trn.MATURITY_DATE == trn.SPOT_DATE) { decPCCF = pccf.DEFAULT; } else { decPCCF = LimitHelper.GetPCCFValue(pccf, LimitHelper.GetMonthBucket(trn.START_DATE.Value, trn.MATURITY_DATE.Value)); } } } return(decPCCF); } catch (Exception ex) { throw this.CreateException(ex, null); } }
public static object CancelDeal(DA_TRN record) { return(DealViewUIP.CancelDeal(SessionInfo, record)); }
public static object CancelDeal(SessionInfo sessioninfo, DA_TRN trn) { try { LookupBusiness _lookupBusiness = new LookupBusiness(); UserBusiness _userBusiness = new UserBusiness(); DealBusiness _dealbusiness = new DealBusiness(); DA_TRN t = _dealbusiness.CancelDeal(sessioninfo, trn); DA_TRN t2 = _dealbusiness.GetDealByDealNo(t.INT_DEAL_NO, t.VERSION).FirstOrDefault(p => p.ID != t.ID); if (t2 != null) { _dealbusiness.CancelDeal(sessioninfo, t2); } var inputuser = _userBusiness.GetAll().FirstOrDefault(u => u.ID == t.LOG.INSERTBYUSERID); var query = new DealViewModel { ID = t.ID, EntryDate = t.LOG.INSERTDATE, DMK_NO = t.INT_DEAL_NO , OPICS_NO = t.EXT_DEAL_NO, TradeDate = t.TRADE_DATE.Value , EffectiveDate = t.START_DATE, Instrument = t.MA_INSRUMENT.LABEL , MaturityDate = t.MATURITY_DATE, BuySell = t.FLAG_BUYSELL , Product = t.MA_PRODUCT.LABEL, Portfolio = t.MA_PORTFOLIO.LABEL , Counterparty = t.MA_COUTERPARTY.SNAME, Notional1 = t.FIRST.NOTIONAL , PayRec1 = t.FIRST.FLAG_PAYREC, FixedFloat1 = !t.FIRST.FLAG_FIXED.HasValue ? null : t.FIRST.FLAG_FIXED.Value ? "FIXED" : "FLOAT" , Rate1 = t.FIRST.RATE, Fixing1 = t.FIRST.FIRSTFIXINGAMT, SwapPoint1 = t.FIRST.SWAP_POINT, Notional2 = t.SECOND.NOTIONAL , PayRec2 = t.SECOND.FLAG_PAYREC, FixedFloat2 = !t.SECOND.FLAG_FIXED.HasValue ? null : t.SECOND.FLAG_FIXED == true ? "FIXED" : "FLOAT" , Rate2 = t.SECOND.RATE, Fixing2 = t.SECOND.FIRSTFIXINGAMT, SwapPoint2 = t.SECOND.SWAP_POINT, Status = _lookupBusiness.GetStatusAll().FirstOrDefault(p => p.ID == t.STATUS_ID).LABEL , KKContribute = t.KK_CONTRIBUTE, BotContribute = t.BOT_CONTRIBUTE , LimitOverwrite = string.IsNullOrEmpty(t.OVER_APPROVER) ? "No" : t.OVER_AMOUNT > 0 && t.OVER_SETTL_AMOUNT > 0 ? "Yes" : t.OVER_AMOUNT > 0 ? "PCE" : "SET" , LimitApprover = t.OVER_APPROVER , Trader = inputuser != null ? inputuser.USERCODE : "" , Remark = t.REMARK }; return(new { Result = "OK", Record = query, DealPairID = t2 != null?t2.ID.ToString() : string.Empty }); } catch (Exception ex) { return(new { Result = "ERROR", Message = ex.Message }); } }
public static object GenerateTrnObject(string strTradeDate , string strBuySell , string strInstrument , string strCtpy , string strPortfolio , string strSettlementDate , string strYield , string strUnit , string strCleanPrice , string strGrossPrice , string strNotional , string strCCY , string strPceFlag , string strSettleFlag , string strYeildType , string strReportBy , string strPurpose , string strTerm , string strRate , string strTBMARemark , string strRemark , string strProductId , bool blnIsSubmit) { try { DA_TRN TrnInfo = DealUIP.GenerateFITransactionObject(SessionInfo , strTradeDate , strBuySell , strInstrument , strCtpy , strPortfolio , strSettlementDate , strYield , strUnit , strCleanPrice , strGrossPrice , strNotional , strCCY , strPceFlag , strSettleFlag , strYeildType , strReportBy , strPurpose , strTerm , strRate , strTBMARemark , strRemark , strProductId); object PCESCEObject; CheckFILimit(blnIsSubmit, TrnInfo, out PCESCEObject); return(new { Result = "OK", record = JsonConvert.SerializeObject(TrnInfo, new IsoDateTimeConverter()), pcesce = PCESCEObject, Message = "" }); } catch (Exception ex) { return(new { Result = "ERROR", Message = ex.Message }); } }