public CardUrlResult GetMemberCardUrls(string localeCode, int employerId, int cchId) { var message = string.Empty; CardUrlResult result = null; var employer = EmployerCache.Employers.FirstOrDefault(e => e.Id.Equals(employerId)); if (employer == null) { message = string.Format("Card url request with employer {0} does not match any known employer", employerId); LogUtil.Log(message, LogLevel.Warn); return(result); } var resolvedLocaleCode = ResolveLocale(localeCode); var cardResults = GetCardResults(cchId, employer, resolvedLocaleCode); if (cardResults == null || cardResults.Count() == 0) { message = string.Format("Unable to resolve member id cards for cchId {0} and localCode {1}", cchId, localeCode); LogUtil.Log(message, LogLevel.Info); } else { LogUtil.Trace(string.Format("Resolved member id cards {0} for cchId {0} and localCode {1}", cchId, localeCode)); result = BuildResult(employer, cardResults); } return(result); }
private static CardUrlResult BuildResult(Employer employer, List <dynamic> cardResults) { var result = new CardUrlResult(); result.Results = new List <CardResult>(); var cardBaseAddress = "CardBaseAddress".GetConfigurationValue(); cardResults.ForEach(cr => { var cardMemberData = new CardDetail(); try { cardMemberData = JsonConvert.DeserializeObject <CardDetail>(cr.MemberCard.CardMemberDataText); } catch { } var cardToken = new CardToken() { EmployerId = employer.Id, CardDetail = cardMemberData, Expires = DateTime.UtcNow.AddMinutes(Convert.ToInt16("TimeoutInMinutes".GetConfigurationValue())) }; cardToken.CardDetail.CardTypeFileName = cr.CardType.FileName; cardToken.CardDetail.CardTypeId = cr.MemberCard.CardTypeId; cardToken.CardDetail.CardViewModeId = cr.CardViewMode.Id; var jwt = ClearCost.Security.JwtService.EncryptPayload(JsonConvert.SerializeObject(cardToken)); var cardResult = new CardResult() { CardName = cr.CardTypeTranslation.CardTypeName, ViewMode = cr.CardViewMode.Name, CardUrl = string.Format("{0}/?tkn={1}|{2}", cardBaseAddress, employer.Id, jwt), SecurityToken = jwt }; result.Results.Add(cardResult); }); return(result); }