예제 #1
0
        //
        // GET: /Policies/
        public ActionResult Index(string lang = null, string policies = null, bool editMode = false)
        {
            PoliciesForUserViewModel model = _policyServices.GetPoliciesForUserOrSession(false, lang);

            if (policies != null)
            {
                string decodedPolicies = Encoding.UTF8.GetString(Convert.FromBase64String(policies));
                if (!String.IsNullOrWhiteSpace(decodedPolicies))
                {
                    var policyIds = decodedPolicies.Replace("{", "").Replace("}", "").Split(',');
                    model.Policies = model.Policies.Where(x => policyIds.Contains(x.PolicyTextId.ToString())).ToList();
                }
            }

            model.EditMode = editMode;

            return(View(model));
        }
예제 #2
0
        private IEnumerable <int> MissingPolices()
        {
            if (_missingPolicies != null)
            {
                return(_missingPolicies);
            }
            var language = _workContext.GetContext().CurrentCulture;
            IEnumerable <PolicyTextInfoPart> neededPolicies = _userExtensionServices.GetUserLinkedPolicies(language);
            var userPolicies = _policyServices.GetPoliciesForUserOrSession(false, language).Policies.Where(w => w.Accepted || (w.AnswerDate > DateTime.MinValue && !w.PolicyText.UserHaveToAccept)).Select(s => s.PolicyTextId).ToList();

            _missingPolicies = neededPolicies.Select(s => s.Id).ToList().Where(w => !userPolicies.Any(a => a == w));
            return(_missingPolicies);
        }
        // GET api/policiesapi
        public PoliciesApiModel Get(string lang)
        {
            PoliciesForUserViewModel model = _policySerivces.GetPoliciesForUserOrSession(false, lang);

            return(new PoliciesApiModel {
                Language = lang,
                PoliciesForUser = new SimplePoliciesForUserViewModel {
                    Policies = model.Policies.Select(s => new SimplePolicyForUserViewModel {
                        Accepted = s.Accepted,
                        AnswerDate = s.AnswerDate,
                        AnswerId = s.AnswerId,
                        OldAccepted = s.OldAccepted,
                        PolicyTextId = s.PolicyTextId,
                        UserId = s.UserId
                    }).ToList()
                }
            });
        }
예제 #4
0
        public IEnumerable <PolicyForUserViewModel> CheckoutPoliciesForUser(IUser user = null, string culture = null)
        {
            var settings = GetSettings();

            if (settings.PolicyTextReferences.Contains(CheckoutPolicySettingsPart.NoPolicyOption))
            {
                // no policy is configured for checkout
                return(Enumerable.Empty <PolicyForUserViewModel>());
            }
            // check the user and culture
            var workContext    = _workContextAccessor.GetContext();
            var userToCheck    = user ?? workContext.CurrentUser;
            var cultureToCheck = string.IsNullOrWhiteSpace(culture)
                ? workContext.CurrentCulture : culture;

            // get checkout policies for the language (if any)
            if (!_checkoutPoliciesByLanguage.ContainsKey(cultureToCheck))
            {
                // fetch the required policies for the language
                _checkoutPoliciesByLanguage.Add(
                    cultureToCheck,
                    CheckoutPoliciesForCulture(cultureToCheck));
            }
            var checkoutPolicies = _checkoutPoliciesByLanguage[cultureToCheck];

            if (!checkoutPolicies.Any())
            {
                // no policy is configured for checkout
                return(Enumerable.Empty <PolicyForUserViewModel>());
            }
            // State of all the site's policies for the user. This includes the ones
            // for which the user hasn't given an answer yet.
            var userPolicies = _policyServices
                               .GetPoliciesForUserOrSession(userToCheck, false, cultureToCheck)
                               .Policies;

            // out of those, only return the ones that are configured for checkout
            return(userPolicies
                   .Where(up => checkoutPolicies.Any(cp => cp.Id == up.PolicyText.Id)));
        }
예제 #5
0
 public void LoggedIn(IUser user)
 {
     try {
         var policy = _policyService.GetPoliciesForUserOrSession(true); // attacca il cookie delle policy quando un utente si logga
     } catch { }
 }