예제 #1
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "manual/ManualRunICM")] HttpRequestMessage req, ExecutionContext context,
            ILogger log)
        {
            log.LogInformation($"C# HTTP trigger function {0} processed a request.", context.FunctionName);

            return(FunctionUtility.ReturnTemplate(req, context));
        }
예제 #2
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "manual/ManualRunICM")] HttpRequestMessage req, ExecutionContext context,
            ILogger log)
        {
            log.LogInformation($"C# HTTP trigger function {0} processed a request.", context.FunctionName);

            return(FunctionUtility.ManualRun <SALsA.LivesiteAutomation.ManualRun.ManualRun_ICM>(req));
        }
예제 #3
0
 /// <summary>
 /// Page_s the init.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
 protected void Page_Init(Object sender, EventArgs e)
 {
     m_SecurityInfo   = new MSecurityInfo(FunctionUtility.CurrentProfile(), AccountUtility.CurrentProfile());
     m_ShowDeleteLink = m_SecurityInfo.MayDelete;
     if (!m_SecurityInfo.MayView)
     {
         this.searchResults.Columns.RemoveAt(0);
     }
 }
예제 #4
0
        protected void Page_Init(object sender, EventArgs e)
        {
            string mAction = GWWebHelper.GetQueryValue(Request, "action");

            if (!String.IsNullOrEmpty(mAction))
            {
                m_SecurityInfo = new MSecurityInfo(FunctionUtility.CurrentProfile(), AccountUtility.CurrentProfile());
            }
        }
예제 #5
0
        public static void InvokeSave(int enableInheritance)
        {
            MDBInformation mProfile = DBInformationUtility.DBInformation();

            mProfile.EnableInheritance = enableInheritance;
            if (DBInformationUtility.UpdateProfile(mProfile))
            {
                FunctionUtility.RemoveCachedFunctions();
            }
        }
예제 #6
0
        /// <summary>
        /// Handles the PreInit event of the Page control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void Page_PreInit(object sender, EventArgs e)
        {
            base.OnInit(e);
            MFunctionProfile mFunction = FunctionUtility.CurrentProfile();

            if (mFunction != null)
            {
                this.EnableViewState = mFunction.EnableViewState;
            }
        }
예제 #7
0
        public static string Decrypt(string textValue)
        {
            string        mRetVal       = "Not Authorized";
            MSecurityInfo mSecurityInfo = new MSecurityInfo(FunctionUtility.GetProfile(ConfigSettings.GetAppSettingValue("Actions_Encryption_Helper", true)), AccountUtility.CurrentProfile());

            if (mSecurityInfo.MayView)
            {
                mRetVal = CryptoUtility.Decrypt(textValue.Trim(), SecurityEntityUtility.CurrentProfile().EncryptionType, ConfigSettings.EncryptionSaltExpression);
            }
            return(mRetVal);
        }
예제 #8
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string mAction = GWWebHelper.GetQueryValue(Request, "action");

            if (!String.IsNullOrEmpty(mAction))
            {
                MFunctionProfile mFunctionProfile = FunctionUtility.GetProfile(mAction);
                MSecurityInfo    mSecurityInfo    = new MSecurityInfo(mFunctionProfile, AccountUtility.CurrentProfile());
                SearchControl.ShowAddLink = mSecurityInfo.MayAdd;
            }
        }
예제 #9
0
        public IHttpActionResult Delete([FromUri] int functionSeqID)
        {
            if (functionSeqID <= 0)
            {
                throw new ArgumentNullException("functionSeqID", " must be a positive number!");
            }
            string mRetVal = "False";
            Logger mLog    = Logger.Instance();

            if (HttpContext.Current.Items["EditId"] != null)
            {
                int mEditId = int.Parse(HttpContext.Current.Items["EditId"].ToString());
                if (mEditId == functionSeqID)
                {
                    MSecurityInfo mSecurityInfo = new MSecurityInfo(FunctionUtility.GetProfile(ConfigSettings.GetAppSettingValue("Actions_EditFunction", true)), AccountUtility.CurrentProfile());
                    if (mSecurityInfo != null)
                    {
                        if (mSecurityInfo.MayDelete)
                        {
                            try
                            {
                                FunctionUtility.Delete(functionSeqID);
                                mRetVal = "True";
                            }
                            catch (Exception ex)
                            {
                                mLog.Error(ex);
                                throw;
                            }
                        }
                        else
                        {
                            Exception mError = new Exception("The account (" + AccountUtility.CurrentProfile().Account + ") being used does not have the correct permissions to delete");
                            mLog.Error(mError);
                            return(this.InternalServerError(mError));
                        }
                    }
                    else
                    {
                        Exception mError = new Exception("Security Info is not in context nothing has been saved!!!!");
                        mLog.Error(mError);
                        return(this.InternalServerError(mError));
                    }
                }
                else
                {
                    Exception mError = new Exception("Identifier you have last looked at does not match the one passed in nothing has been saved!!!!");
                    mLog.Error(mError);
                    return(this.InternalServerError(mError));
                }
            }
            return(Ok(mRetVal));
        }
예제 #10
0
        /// <summary>
        /// Page_s the init.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void Page_Init(Object sender, EventArgs e)
        {
            string mAction = GWWebHelper.GetQueryValue(Request, "action");

            if (!String.IsNullOrEmpty(mAction))
            {
                MSecurityInfo mSecurityInfo = new MSecurityInfo(FunctionUtility.GetProfile(mAction), AccountUtility.CurrentProfile());
                if (!mSecurityInfo.MayDelete)
                {
                    this.searchResults.Columns.RemoveAt(1);
                }
            }
        }
예제 #11
0
        public IHttpActionResult Save(MUIRoleProfile profile)
        {
            if (profile == null)
            {
                throw new ArgumentNullException("uiProfile", "uiProfile cannot be a null reference (Nothing in Visual Basic)!");
            }
            string        mRetVal        = "false";
            MRoleProfile  mProfileToSave = new MRoleProfile();
            MSecurityInfo mSecurityInfo  = new MSecurityInfo(FunctionUtility.GetProfile(ConfigSettings.GetAppSettingValue("Actions_EditRoles", true)), AccountUtility.CurrentProfile());
            Logger        mLog           = Logger.Instance();

            if (HttpContext.Current.Items["EditId"] != null)
            {
                if (profile.Id == -1)
                {
                    if (!mSecurityInfo.MayAdd)
                    {
                        Exception mError = new Exception("The account (" + AccountUtility.CurrentProfile().Account + ") being used does not have the correct permissions to add");
                        mLog.Error(mError);
                        return(this.InternalServerError(mError));
                    }
                    mProfileToSave.AddedBy   = AccountUtility.CurrentProfile().Id;
                    mProfileToSave.AddedDate = DateTime.Now;
                }
                else
                {
                    if (!mSecurityInfo.MayAdd)
                    {
                        Exception mError = new Exception("The account (" + AccountUtility.CurrentProfile().Account + ") being used does not have the correct permissions to edit");
                        mLog.Error(mError);
                        return(this.InternalServerError(mError));
                    }
                    if (profile.IsSystem)
                    {
                        mProfileToSave.IsSystem = true;
                    }
                    if (profile.IsSystemOnly)
                    {
                        mProfileToSave.IsSystemOnly = true;
                    }
                    mProfileToSave = RoleUtility.GetProfile(profile.Id);

                    mProfileToSave.UpdatedBy   = AccountUtility.CurrentProfile().Id;
                    mProfileToSave.UpdatedDate = DateTime.Now;
                }
            }
            mProfileToSave = populateProfile(profile);
            RoleUtility.Save(mProfileToSave);
            return(Ok(mRetVal));
        }
예제 #12
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "healthprobe")] HttpRequestMessage req,
            ILogger log)
        {
            FunctionUtility.HealthProbe();
            var response = req.CreateResponse(HttpStatusCode.OK);

            response.Headers.CacheControl = new CacheControlHeaderValue
            {
                NoCache        = true,
                NoStore        = true,
                MustRevalidate = true
            };
            return(response);
        }
        public ActionResult SaveDetail(UserLogin data)
        {
            Guid g;

            g         = Guid.NewGuid();
            data.SALT = g.ToString();
            var temp    = FunctionUtility.GetMd5Hash(data.PASSWORD);
            var newpass = FunctionUtility.GetMd5Hash(data.PASSWORD + data.SALT);

            data.PASSWORD = newpass;
            //_memberSrv.UpdateDetail(data);
            var tempDate = _memberSrv.SaveDetail(data);

            return(Json(new { returnData = tempDate, jsData = _memberSrv.GetAllDetail() }));
        }
예제 #14
0
        protected void Page_Init(Object sender, EventArgs e)
        {
            string mAction = "Search_Functions";

            if (!String.IsNullOrEmpty(mAction))
            {
                MFunctionProfile mFunctionProfile = FunctionUtility.GetProfile(mAction);
                m_SecurityInfo = new MSecurityInfo(mFunctionProfile, AccountUtility.CurrentProfile());
                if (!m_SecurityInfo.MayEdit)
                {
                    searchResults.Columns.RemoveAt(0);
                }
                m_ShowDeleteLink = m_SecurityInfo.MayDelete;
            }
        }
예제 #15
0
        /// <summary>
        /// Binds the data.
        /// </summary>
        /// <param name="searchCriteria">The search criteria.</param>
        private void bindData(MSearchCriteria searchCriteria)
        {
            DataTable mDataTable = FunctionUtility.Search(searchCriteria);

            if (mDataTable != null && mDataTable.Rows.Count > 0)
            {
                DataView mDataView = mDataTable.DefaultView;
                recordsReturned.Value    = mDataTable.Rows[0][0].ToString();
                searchResults.DataSource = mDataTable;
                searchResults.DataBind();
            }
            else
            {
                noResults.Visible = true;
            }
        }
예제 #16
0
        protected void Page_Load(object sender, EventArgs e)
        {
            SearchControl.ShowAddLink = false;
            MDirectoryProfile mDirectoryProfile = DirectoryUtility.GetProfile(FunctionUtility.CurrentProfile().Id);
            String            mLinks            = FileUtility.GetDirectoryLinks("/", mDirectoryProfile.FunctionSeqId);

            directorySelector.InnerHtml = mLinks;
            MFunctionProfile mFunctionProfile = FunctionUtility.CurrentProfile();
            MAccountProfile  mAccountProfile  = AccountUtility.CurrentProfile();
            MSecurityInfo    mSI = new MSecurityInfo(mFunctionProfile, mAccountProfile);

            UploadControl.Visible       = mSI.MayAdd;
            tdNewDirectory.Visible      = mSI.MayAdd;
            SearchControl.ShowDeleteAll = mSI.MayDelete;
            SearchControl.ShowSelect    = mSI.MayDelete;
        }
예제 #17
0
        protected void Page_Load(object sender, EventArgs e)
        {
            MRoleProfile  myProfile           = new MRoleProfile();
            MSecurityInfo accountSecurityInfo = new MSecurityInfo(FunctionUtility.CurrentProfile(), AccountUtility.CurrentProfile());

            txtEditID.Text = Request.QueryString[GWWebHelper.RoleDataKeyField].ToString();
            //HttpContext.Current.Session.Remove(AppConstants.ROLE_DATA_KEY_FIELD);
            myProfile.Id = int.Parse(txtEditID.Text);
            HttpContext.Current.Session.Add("EditId", myProfile.Id);
            myProfile    = RoleUtility.GetProfile(myProfile.Id);
            litRole.Text = myProfile.Name;
            myProfile.SecurityEntityId = int.Parse(ClientChoicesState[MClientChoices.SecurityEntityId].ToString());
            ctlMembers.DataSource      = RoleUtility.GetAccountsNotInRole(myProfile).ToArray(Type.GetType("System.String"));
            ctlMembers.SelectedItems   = (string[])RoleUtility.GetAccountsInRole(myProfile).ToArray(Type.GetType("System.String"));
            ctlMembers.DataBind();
        }
예제 #18
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "icm/{id:int}")] HttpRequestMessage req, int id,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed for NewICM Get: {0}", id);

            var response = FunctionUtility.RunIfReadySALsA(req, id);

            response.Headers.CacheControl = new CacheControlHeaderValue
            {
                NoCache        = true,
                NoStore        = true,
                MustRevalidate = true
            };
            return(response);
        }
예제 #19
0
        private void populateParent()
        {
            //dvFunctions.RowFilter = "PARENT_FUNCTION_SEQ_ID <> " + CurrentProfile.ID;
            var mResult = from mProfile in FunctionUtility.Functions()
                          where mProfile.ParentId != m_Profile.Id
                          select mProfile;

            dropNavParent.DataValueField = "Id";
            dropNavParent.DataTextField  = "Name";
            dropNavParent.DataSource     = mResult;
            dropNavParent.DataBind();
            if (m_Profile.Id != -1)
            {
                NameValuePairUtility.SetDropSelection(dropNavParent, m_Profile.ParentId.ToString());
            }
        }
예제 #20
0
        public IEnumerable <PrivacyPolicyViewModel> PrivacyPolicy()
        {
            var policies = _privacyPolicyRepository.GetAll();
            var result   = new List <PrivacyPolicyViewModel>();

            foreach (var policy in policies)
            {
                result.Add(new PrivacyPolicyViewModel()
                {
                    CollectionName = policy.CollectionName,
                    Description    = policy.Description,
                    PolicyId       = policy.PolicyId,
                    Target         = FunctionUtility.Convert(policy.Target)
                });
            }
            return(result);
        }
예제 #21
0
        protected void Page_Load(object sender, EventArgs e)
        {
            String           mAction          = ClientChoicesState[MClientChoices.Action];
            MFunctionProfile mFunctionProfile = FunctionUtility.GetProfile(mAction);
            MAccountProfile  mAccountProfile  = AccountUtility.CurrentProfile();
            MSecurityInfo    mSecurityInfo    = new MSecurityInfo(mFunctionProfile, mAccountProfile);

            if (mSecurityInfo.MayView)
            {
                String mScript = "<script type='text/javascript' language='javascript'>window.location.hash = '?Action=" + mAction + "'</script>";
                Page.ClientScript.RegisterStartupScript(this.GetType(), "", mScript);
            }
            else
            {
                Response.Write("Your favorite is not available.  Please ensure that you have chosen the correct " + ConfigSettings.SecurityEntityTranslation);
            }
        }
예제 #22
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!String.IsNullOrEmpty(HttpContext.Current.Request.QueryString["FunctionSeqID"]))
     {
         int mFunctionSeqID = int.Parse((HttpContext.Current.Request.QueryString["FunctionSeqID"]).ToString());
         if (mFunctionSeqID != -1)
         {
             m_Profile = FunctionUtility.GetProfile(mFunctionSeqID);
         }
         else
         {
             m_Profile = new MFunctionProfile();
         }
         HttpContext.Current.Session.Add("EditId", m_Profile.Id);
         populatePage();
     }
 }
예제 #23
0
        public bool MoveMenu(int functionSeqId, string direction)
        {
            bool             mRetVal         = false;
            MFunctionProfile mProfile        = FunctionUtility.GetProfile(functionSeqId);
            MAccountProfile  mAccountProfile = AccountUtility.CurrentProfile();
            DirectionType    mDirection;

            Enum.TryParse(direction, out mDirection);
            if (direction == "up")
            {
                FunctionUtility.Move(mProfile, DirectionType.Up, mAccountProfile.Id, DateTime.Now);
            }
            else
            {
                FunctionUtility.Move(mProfile, DirectionType.Down, mAccountProfile.Id, DateTime.Now);
            }
            return(mRetVal);
        }
예제 #24
0
        public List <UIFunctionMenuOrder> GetFunctionOrder([FromUri()] int functionSeqId)
        {
            List <UIFunctionMenuOrder> mRetVal = new List <UIFunctionMenuOrder>();

            if (functionSeqId > 0)
            {
                MFunctionProfile profile    = FunctionUtility.GetProfile(functionSeqId);
                DataView         myDataView = FunctionUtility.GetFunctionMenuOrder(profile).DefaultView;
                foreach (DataRowView mRow in myDataView)
                {
                    UIFunctionMenuOrder mItem = new UIFunctionMenuOrder();
                    mItem.Function_Seq_Id = mRow["Function_Seq_Id"].ToString();
                    mItem.Name            = mRow["Name"].ToString();
                    mItem.Action          = mRow["Action"].ToString();
                    mRetVal.Add(mItem);
                }
            }
            return(mRetVal);
        }
예제 #25
0
 private void populateFucntionDrop()
 {
     if (m_Profile.Id > 0)
     {
         DataView mDataView = FunctionUtility.GetFunctionMenuOrder(m_Profile).DefaultView;
         if (mDataView.Count > 0)
         {
             mDataView.Sort               = "[Name] ASC";
             dropFunctions.DataSource     = mDataView;
             dropFunctions.DataValueField = "FUNCTION_SEQ_ID";
             dropFunctions.DataTextField  = "NAME";
             dropFunctions.DataBind();
             if (m_Profile.Id != -1)
             {
                 NameValuePairUtility.SetDropSelection(dropFunctions, m_Profile.Id.ToString());
             }
         }
     }
 }
예제 #26
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "status/{id:int}")] HttpRequestMessage req, int id,
            ILogger log, System.Security.Claims.ClaimsPrincipal claimsPrincipal)
        {
            if (Auth.CheckIdentity(req, log, claimsPrincipal, out HttpResponseMessage err) == false)
            {
                return(err);
            }
            ;

            var icm = TableStorage.ListAllEntity().Where(x => x.RowKey == id.ToString()).ToList();
            HttpResponseMessage response;

            if (icm.Count == 0)
            {
                log.LogInformation("No ICM found, will redirect to /api/status");
                FunctionUtility.AddRunToSALsA(id);
                response = req.CreateResponse(HttpStatusCode.TemporaryRedirect);
                response.Headers.Location = new Uri("/api/status", UriKind.Relative);
            }
            else if (icm.FirstOrDefault().Log == null)
            {
                log.LogInformation("ICM found, but no logs. Will return 404");
                response         = req.CreateResponse(HttpStatusCode.NotFound);
                response.Content = new StringContent(String.Format("<b>SALsA Logs not available.</b><br>Status : <b>{0}</b>",
                                                                   Utility.UrlToHml(icm.FirstOrDefault().SALsAState, icm.FirstOrDefault().SALsALog, 14)), System.Text.Encoding.UTF8, "text/html");
            }
            else
            {
                log.LogInformation("ICM found, logs found. Redirecting to logs");
                response = req.CreateResponse(HttpStatusCode.TemporaryRedirect);
                response.Headers.Location = new Uri(icm.FirstOrDefault().Log, UriKind.Absolute);
            }

            response.Headers.CacheControl = new CacheControlHeaderValue
            {
                NoCache        = true,
                NoStore        = true,
                MustRevalidate = true
            };
            return(response);
        }
예제 #27
0
        public IHttpActionResult DeleteNameValuePairDetail(UINVPDetailProfile uiProfile)
        {
            string          mRetVal          = false.ToString();
            String          mAction          = GWWebHelper.GetQueryValue(HttpContext.Current.Request, "Action");
            int             mEditId          = int.Parse(HttpContext.Current.Items["EditId"].ToString());
            MAccountProfile mUpdatingAccount = AccountUtility.CurrentProfile();
            MSecurityInfo   mSecurityInfo    = new MSecurityInfo(FunctionUtility.GetProfile(mAction), mUpdatingAccount);

            Logger mLog = Logger.Instance();

            if (mEditId != uiProfile.NVP_SEQ_DET_ID)
            {
                Exception mError = new Exception("Identifier you have last looked at does not match the one passed in nothing has been saved!!!!");
                mLog.Error(mError);
                return(this.InternalServerError(mError));
            }
            if (!mSecurityInfo.MayDelete)
            {
                Exception mError = new Exception("The account (" + mUpdatingAccount.Account + ") being used does not have the correct permissions to delete");
                mLog.Error(mError);
                return(this.InternalServerError(mError));
            }
            try
            {
                MNameValuePairDetail mProfile = new MNameValuePairDetail();
                mProfile.NameValuePairSeqId = uiProfile.NVP_SEQ_ID;
                mProfile.Id          = uiProfile.NVP_SEQ_DET_ID;
                mProfile.UpdatedBy   = mUpdatingAccount.Id;
                mProfile.UpdatedDate = DateTime.Now;
                mProfile.SortOrder   = uiProfile.SortOrder;
                mProfile.Text        = uiProfile.Text;
                mProfile.Value       = uiProfile.Value;
                mProfile.Status      = uiProfile.Status;
                NameValuePairUtility.DeleteDetail(mProfile);
            }
            catch (Exception ex)
            {
                mLog.Error(ex);
                throw;
            }
            return(this.Ok(mRetVal));
        }
        public IEnumerable <AccessControlPolicyViewModel> AccessControlPolicy()
        {
            var accessControlPolicies = _accessControlPolicyRepository.GetAll();
            var result = new List <AccessControlPolicyViewModel>();

            foreach (var policy in accessControlPolicies)
            {
                result.Add(new AccessControlPolicyViewModel()
                {
                    PolicyId       = policy.PolicyId,
                    Action         = policy.Action,
                    CollectionName = policy.Action,
                    Description    = policy.Description,
                    IsAttributeResourceRequired = policy.IsAttributeResourceRequired,
                    RuleCombining = policy.RuleCombining,
                    Target        = FunctionUtility.Convert(policy.Target)
                });
            }
            return(result);
        }
예제 #29
0
        public IHttpActionResult Delete([FromUri] int groupSeqId)
        {
            string        mRetVal       = "false";
            MSecurityInfo mSecurityInfo = new MSecurityInfo(FunctionUtility.GetProfile(ConfigSettings.GetAppSettingValue("Actions_EditGroups", true)), AccountUtility.CurrentProfile());

            if (!mSecurityInfo.MayDelete)
            {
                Exception mError = new Exception("The account (" + AccountUtility.CurrentProfile().Account + ") being used does not have the correct permissions to delete");
                Logger    mLog   = Logger.Instance();
                mLog.Error(mError);
                return(this.InternalServerError(mError));
            }
            else
            {
                if (HttpContext.Current.Items["EditId"] != null)
                {
                    int mEditId = int.Parse(HttpContext.Current.Items["EditId"].ToString());
                    if (mEditId == groupSeqId)
                    {
                        MGroupProfile mProfile = GroupUtility.GetProfile(groupSeqId);
                        GroupUtility.Delete(mProfile);
                    }
                    else
                    {
                        Exception mError = new Exception("Identifier you have last looked at does not match the one passed in nothing has been saved!!!!");
                        Logger    mLog   = Logger.Instance();
                        mLog.Error(mError);
                        return(this.InternalServerError(mError));
                    }
                }
                else
                {
                    Exception mError = new Exception("The identifier unknown and nothing has been saved!!!!");
                    Logger    mLog   = Logger.Instance();
                    mLog.Error(mError);
                    return(this.InternalServerError(mError));
                }
            }

            return(Ok(mRetVal));
        }
예제 #30
0
        public IEnumerable <PrivacyPolicyViewModel> Review([FromBody] PolicyReviewCommand command)
        {
            JObject user        = string.IsNullOrEmpty(command.UserJsonData) ? new JObject() : JObject.Parse(command.UserJsonData);
            JObject resource    = string.IsNullOrEmpty(command.ResourceJsonData) ? new JObject() : JObject.Parse(command.ResourceJsonData);
            JObject environment = string.IsNullOrEmpty(command.EnvironmentJsonData) ? new JObject() : JObject.Parse(command.EnvironmentJsonData);

            var relativePolicies = _privacyService.Review(user, resource, environment);

            var result = new List <PrivacyPolicyViewModel>();

            foreach (var policy in relativePolicies)
            {
                result.Add(new PrivacyPolicyViewModel()
                {
                    CollectionName = policy.CollectionName,
                    Description    = policy.Description,
                    PolicyId       = policy.PolicyId,
                    Target         = FunctionUtility.Convert(policy.Target)
                });
            }
            return(result);
        }