示例#1
0
        public FileStreamResult CreateScriptFile(Guid IdAudience)
        {
            AudienceManager  repository = new AudienceManager();
            AudienceDocument _audience  = repository.GetAudienceById(IdAudience.ToString());

            if (_audience != null)
            {
                string datafile = CreateScriptGtm(IdAudience);

                if (datafile.Length > 0)
                {
                    var byteArray = System.Text.Encoding.ASCII.GetBytes(datafile);
                    var stream    = new System.IO.MemoryStream(byteArray);

                    System.Web.Mvc.FileStreamResult _sfile = new System.Web.Mvc.FileStreamResult(stream, "text/plain");
                    _sfile.FileDownloadName = "scriptGTM.txt";

                    return(_sfile);
                }
                else
                {
                    return(null);
                }
            }
            return(null);
        }
示例#2
0
        public FileStreamResult CreateVerificationFile(Guid IdAudience)
        {
            AudienceDocument _audience = GetAudienceById(IdAudience.ToString());

            if (_audience != null)
            {
                string datafile = _audience.VerificationString;

                if (datafile.Length > 0)
                {
                    var byteArray = System.Text.Encoding.ASCII.GetBytes(datafile);
                    var stream    = new System.IO.MemoryStream(byteArray);

                    System.Web.Mvc.FileStreamResult _sfile = new System.Web.Mvc.FileStreamResult(stream, "text/plain");
                    _sfile.FileDownloadName = "kindads.txt";

                    return(_sfile);
                }
                else
                {
                    return(null);
                }
            }
            return(null);
        }
示例#3
0
        public AudienceDocument GetAudienceById(string IdAudience)
        {
            AudienceManager  repository = new AudienceManager();
            AudienceDocument audience   = repository.GetAudienceById(IdAudience);

            return(audience);
        }
        public VerifyAudienceViewModel()
        {
            txt = new TxtSiteValidation();
            ad  = new AzureADSiteValidation();
            gtm = new GoogleTagManagerValidation();

            audience = new AudienceDocument();
        }
示例#5
0
 public ProposalViewModel()
 {
     audience           = new AudienceDocument();
     audienceChannel    = new AudienceChannelDocument();
     providerImageClass = string.Empty;
     proposal           = new ProposalDocument();
     listQuestion       = new List <ProposalQuestionViewModel>();
 }
示例#6
0
        public bool SiteWithTokenVerified(Guid IdAudience)
        {
            bool             result    = false;
            AudienceDocument _audience = GetAudienceById(IdAudience.ToString());

            result = (bool)_audience.Verified;
            return(result);
        }
示例#7
0
 public AudienceViewModel()
 {
     manager              = new AudienceManager();
     audience             = new AudienceDocument();
     preferences          = new List <AudiencePreferenceDocument>();
     preferencesStringify = string.Empty;
     telemetria           = new Trace();
 }
示例#8
0
        public AudienceDocument getAudienceById(string audienceId)
        {
            string Url = string.Empty;

            collectionName = CosmosCollections.Audience.ToString();
            string           query    = $"SELECT * FROM {collectionName} WHERE {collectionName}.id='{audienceId}'";
            AudienceDocument audience = context.ExecuteQuery <AudienceDocument>(databaseName, collectionName, query).FirstOrDefault();

            return(audience);
        }
示例#9
0
        public PartialViewResult GetChannelForm(string channelId, string audienceId)
        {
            AudienceChannelViewModel viewModel = new AudienceChannelViewModel();
            AudienceDocument         audience  = audienceManager.GetAudienceById(audienceId);

            ViewBag.IsPremium  = audience.IsPremium;
            ViewBag.visibility = audience.Visibility;
            string path = _audienceChannelManager.GetChannelPathFromPartnerId(channelId);

            viewModel.channel.IsDefaultDescription = true;
            viewModel.channel.IsDefaultImage       = true;
            return(PartialView(path, viewModel));
        }
示例#10
0
        public PartialViewResult GetAudienceChannelEditForm(string audienceChannelId)
        {
            AudienceChannelViewModel viewModel       = this._audienceChannelManager.FindAudienceChannelById(audienceChannelId);
            AudienceChannelDocument  audienceChannel = _audienceChannelManager.GetAudienceChannelById(audienceChannelId);
            AudienceDocument         audience        = audienceManager.GetAudienceById(audienceChannel.AudienceId);

            viewModel.listQuestions    = audienceManager.GetQuestionsByAudienceChannelId(audienceChannelId);
            ViewBag.IsPremium          = audience.IsPremium;
            ViewBag.visibility         = audience.Visibility;
            ViewBag.ImageSrcPreview    = audience.ImageUrl;
            ViewBag.descriptionPreview = audience.Description;
            string path = _audienceChannelManager.GetEditChannelPathFromPartnerId(audienceChannel.ChannelId);


            return(PartialView(path, viewModel));
        }
示例#11
0
        public ActionResult CreateChannel([FromBody] string audienceId)
        {
            audienceManager.audienceId = audienceId;
            AudienceDocument audience = audienceManager.GetAudienceById(audienceManager.audienceId);

            TempData["tdIdAudience"]   = audienceManager.audienceId;
            ViewBag.ImageSrcPreview    = audience.ImageUrl;
            ViewBag.descriptionPreview = audience.Description;
            ViewBag.site = audience.WebSiteUrl;
            AudienceChannelViewModel model = new AudienceChannelViewModel();

            if (!string.IsNullOrEmpty(audienceId))
            {
                TempData["tdIdAudience"] = audienceId;
            }
            return(View(model));
        }
示例#12
0
        public bool ValidateToken(string messageToken)
        {
            bool result = false;

            try
            {
                // Obtenemos el objeto JSON
                SiteValidationToken siteToVerified = JsonConvert.DeserializeObject <SiteValidationToken>(messageToken);
                Guid             IdAudience        = new Guid(siteToVerified.AudienceId);
                AudienceDocument audience          = repository.GetAudienceById(IdAudience.ToString());

                //Creamos el token con los datos del sitio
                //SiteToken siteToken = new SiteToken
                //{
                //    Name = audience.Title,
                //    Url = siteToVerified.SiteUrl,
                //    SiteId = new Guid(siteToVerified.AudienceId)
                //};

                //string siteTokenRow = JsonConvert.SerializeObject(siteToken);
                //string token = Security.GetSha256(siteTokenRow);

                string siteclean           = audience.WebSiteUrl.Replace("https://", "").Replace("http://", "");
                string siteToVerifiedClean = siteToVerified.SiteUrl.Replace("https://", "").Replace("http://", "");
                // Realizamos la validacion de la url del sitio y del token
                if (siteclean == siteToVerifiedClean)
                {
                    audience.Verified = true;
                    result            = true;
                    repository.UpdateAudience(audience);
                    //Enviar notificacion del resultado
                }
                else
                {
                    //Enviar notificacion del resultado
                }
            }
            catch (Exception e)
            {
                string messageException = telemetria.MakeMessageException(e, System.Reflection.MethodBase.GetCurrentMethod().Name);
                telemetria.Critical(messageException);
            }
            return(result);
        }
        public ActionResult VerifyWebSite(string audienceId)
        {
            //cargar el script y mostralo en la vista
            AudienceDocument        audience = new AudienceDocument();
            VerifyAudienceViewModel model    = new VerifyAudienceViewModel();

            model.gtm.Script       = siteViewModelManager.CreateScriptGtm(new Guid(audienceId));
            model.gtm.ScriptByRows = siteViewModelManager.CreateScriptGtmByRows(new Guid(audienceId));

            if (audienceId != null)
            {
                AudienceDocument ad = audienceManager.GetAudienceById(audienceId);
                ViewBag.site             = ad.WebSiteUrl;
                TempData["tdIdAudience"] = audienceId;
                audience       = ad;
                model.audience = audience;
            }

            return(View(model));
        }
示例#14
0
        public AudienceDocument UpdateAudience(AudienceDocument audience, string preferencesStringify)
        {
            List <AudiencePreferenceDocument> existingPreferences = GetPreferencesByAudienceId(audience.Id);

            context.DeleteDocumentsById(databaseName, CosmosCollections.AudiencePreference.ToString(), existingPreferences.Select(p => p.Id).ToList());
            if (!string.IsNullOrEmpty(preferencesStringify))
            {
                List <AudiencePreferenceDocument> preferences = GetPreferences(preferencesStringify, audience.Id);
                foreach (var preference in preferences)
                {
                    preference.Id = Guid.NewGuid().ToString();

                    context.AddDocument <AudiencePreferenceDocument>(databaseName, CosmosCollections.AudiencePreference.ToString(), preference);
                }
            }


            context.UpsertDocument <AudienceDocument>(this.databaseName, CosmosCollections.Audience.ToString(), audience);

            return(GetAudienceById(audience.Id));
        }
示例#15
0
        public bool SiteWithTxtVerified(Guid IdAudience)
        {
            bool             result     = false;
            AudienceManager  repository = new AudienceManager();
            AudienceDocument audience   = repository.GetAudienceById(IdAudience.ToString());

            System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(audience.WebSiteUrl + "/kindads.txt");
            request.Method = "GET";

            try
            {
                System.Net.WebResponse webResponse = request.GetResponse();
                using (System.IO.Stream webStream = webResponse.GetResponseStream())
                {
                    if (webStream != null)
                    {
                        using (System.IO.StreamReader responseReader = new System.IO.StreamReader(webStream))
                        {
                            var _response = responseReader.ReadToEnd();
                            if (_response != null)
                            {
                                if (_response.Trim() == audience.VerificationString.Trim())
                                {
                                    //Verify Site
                                    audience.Verified = true;
                                    repository.UpdateAudience(audience);
                                    result = true;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception Ex)
            {
                //Do nothing
            }
            return(result);
        }
示例#16
0
        public ActionResult Channel(string audienceId, string audienceChannelId, string channelTypeId)
        {
            audienceManager.audienceId = audienceId;
            AudienceDocument audience = audienceManager.GetAudienceById(audienceManager.audienceId);

            TempData["tdIdAudience"] = audienceManager.audienceId;

            ViewBag.site          = audience.WebSiteUrl;
            ViewBag.channelTypeId = channelTypeId;
            ViewBag.audienceName  = audience.Title;
            ViewBag.audienceImage = audience.ImageUrl;
            ViewBag.siteUrl       = audience.WebSiteUrl;

            ViewBag.NoProposals = this._proposalManager.GetNoProposalsByAudienceChannelId(audienceChannelId);

            if (!string.IsNullOrEmpty(audienceId))
            {
                TempData["tdIdAudience"] = audienceId;
            }

            ViewBag.audienceChannelId = audienceChannelId;
            return(View());
        }
示例#17
0
 public ViewChannelViewModel()
 {
     audience           = new AudienceDocument();
     audienceChannel    = new AudienceChannelDocument();
     providerImageClass = string.Empty;
 }
示例#18
0
 public bool UpdateAudience(AudienceDocument audienceDocument)
 {
     return(context.AddDocument(databaseName, CosmosCollections.Audience.ToString(), audienceDocument));
 }
 public AudienceListItemViewModel()
 {
     audience         = new AudienceDocument();
     _audienceManager = new AudienceChannelManager();
 }
示例#20
0
 public ChannelViewModel()
 {
     audienceChannel = new AudienceChannelDocument();
     audience        = new AudienceDocument();
 }
示例#21
0
        public ActionResult Channel([FromBody] AudienceChannelViewModel model)
        {
            try {
                model.channel.Description = Negocio.Utilerias.StringUtilities.RemoveNewLineInString(model.channel.Description);

                //List<QuestionAskToAudienceChannelDocument> newQuestions = (List<QuestionAskToAudienceChannelDocument>)TempData["vdListQuestions"];

                AudienceChannelDocument audienceChannelSaved = this._audienceChannelManager.GetAudienceChannelById(model.channel.Id);
                bool changeImage       = model.channel.IsDefaultImage != audienceChannelSaved.IsDefaultImage;
                bool changeDescription = model.channel.IsDefaultDescription != audienceChannelSaved.IsDefaultDescription;

                string           newImageUrl    = string.Empty;
                string           newDescription = string.Empty;
                AudienceDocument audience       = null;
                if (changeImage)
                {
                    if (model.channel.IsDefaultImage)
                    {
                        audience    = this.audienceManager.GetAudienceById(audienceChannelSaved.AudienceId);
                        newImageUrl = audience.ImageUrl;
                    }
                    else
                    {
                        //Si la imagen es seleccionada por el usuario
                        newImageUrl = BindFile(model);
                        if (string.IsNullOrEmpty(newImageUrl))
                        {
                            newImageUrl = audienceChannelSaved.ImageUrl;
                        }
                    }
                }
                else
                {
                    if (model.channel.IsDefaultImage)
                    {
                        newImageUrl = audienceChannelSaved.ImageUrl;
                    }
                    else
                    {
                        //Si la imagen es seleccionada por el usuario
                        newImageUrl = BindFile(model);

                        if (string.IsNullOrEmpty(newImageUrl))
                        {
                            if (string.IsNullOrEmpty(audienceChannelSaved.ImageUrl))
                            {
                                audience    = this.audienceManager.GetAudienceById(audienceChannelSaved.AudienceId);
                                newImageUrl = audience.ImageUrl;
                            }
                            else
                            {
                                newImageUrl = audienceChannelSaved.ImageUrl;
                            }
                        }
                    }
                }

                if (changeDescription)
                {
                    if (model.channel.IsDefaultDescription)
                    {
                        audience = audience == null?this.audienceManager.GetAudienceById(audienceChannelSaved.AudienceId) : audience;

                        newDescription = audience.Description;
                    }
                }

                audienceChannelSaved.Price                = model.channel.Price;
                audienceChannelSaved.Name                 = model.channel.Name;
                audienceChannelSaved.TagLine              = model.channel.TagLine;
                audienceChannelSaved.ImageUrl             = newImageUrl;
                audienceChannelSaved.Description          = changeDescription ? (model.channel.IsDefaultDescription ? newDescription : Negocio.Utilerias.StringUtilities.RemoveNewLineInString(model.channel.Description)) : audienceChannelSaved.Description;
                audienceChannelSaved.IsDefaultImage       = model.channel.IsDefaultImage;
                audienceChannelSaved.IsDefaultDescription = model.channel.IsDefaultDescription;
                audienceChannelSaved.Visibility           = model.channel.Visibility;
                model.channel = audienceChannelSaved;
                //model.listQuestions = newQuestions;
                this._audienceChannelManager.UpdateAudienceChannel(model);
                return(Json(new { success = true, message = "Audience Channel edited successfully" }));
            }
            catch {
                return(Json(new { error = "Error creating Audience Channel" }));
            }
        }
示例#22
0
        public ActionResult EditAudience(AudienceViewModel viewModel)
        {
            string userId = User.Identity.GetUserId();

            try {
                var protocol = viewModel.audience.UrlProtocol == "1" ? "https://" : "http://";
                viewModel.audience.WebSiteUrl = string.Format("{0}{1}", protocol, viewModel.audience.WebSiteUrl.Replace("www.", "").Replace("https://", "").Replace("http://", ""));

                //Subimos imagen de icono en caso de que sea una nueva y la seteamos al VM
                bool newIconImage = true;
                newIconImage = string.IsNullOrEmpty(viewModel.audience.IconUrl);
                List <Models.Core.FileUpload> images = null;
                if (newIconImage)
                {
                    images = GetAndSetIconUrl(viewModel);
                }

                //Submis imagen en de que sea nueva y la seteamos al VM
                bool newImgImage = true;
                newImgImage = string.IsNullOrEmpty(viewModel.audience.ImageUrl);
                if (newImgImage)
                {
                    GetAndSetImageUrl(viewModel, images);
                }

                viewModel.audience.Description = Negocio.Utilerias.StringUtilities.RemoveNewLineInString(viewModel.audience.Description);

                //Seteamos campos basicos
                AudienceDocument audienceCandidate = manager.GetAudienceById(viewModel.audience.Id);
                string           imgUrl            = newImgImage ? viewModel.audience.ImageUrl : audienceCandidate.ImageUrl;
                bool             changeImage       = imgUrl != audienceCandidate.ImageUrl;
                bool             changeDescription = audienceCandidate.Description != viewModel.audience.Description;
                bool             changeVisibility  = (audienceCandidate.Visibility != viewModel.audience.Visibility) && !viewModel.audience.Visibility;


                audienceCandidate.Title                = viewModel.audience.Title;
                audienceCandidate.Tagline              = viewModel.audience.Tagline;
                audienceCandidate.UrlProtocol          = viewModel.audience.UrlProtocol;
                audienceCandidate.Description          = viewModel.audience.Description;
                audienceCandidate.WebSiteUrl           = viewModel.audience.WebSiteUrl;
                audienceCandidate.IconUrl              = newIconImage ? viewModel.audience.IconUrl : audienceCandidate.IconUrl;
                audienceCandidate.ImageUrl             = imgUrl;
                audienceCandidate.HowManyAdvertisers   = viewModel.audience.HowManyAdvertisers;
                audienceCandidate.PeopleInYourBusiness = viewModel.audience.PeopleInYourBusiness;
                audienceCandidate.CountryBusinessInId  = viewModel.audience.CountryBusinessInId;
                audienceCandidate.YearFounded          = viewModel.audience.YearFounded;
                audienceCandidate.Visibility           = viewModel.audience.Visibility;
                audienceCandidate.CategoryId           = viewModel.audience.CategoryId;
                audienceCandidate.SubCategoryId        = viewModel.audience.SubCategoryId;
                //Persistimos audience candidate and preferences
                AudienceDocument audience = manager.UpdateAudience(audienceCandidate, viewModel.preferencesStringify);
                //viewModel.audience = audience;

                if (changeDescription)
                {
                    manager.EnqueueAudienceChange(new AudienceChangeNotification {
                        ChangeType  = TypeAudienceChange.ChangeDescription,
                        idAudience  = viewModel.audience.Id,
                        Description = audienceCandidate.Description
                    });
                }

                if (changeImage)
                {
                    manager.EnqueueAudienceChange(new AudienceChangeNotification {
                        ChangeType = TypeAudienceChange.ChangeImage,
                        idAudience = viewModel.audience.Id,
                        ImageUrl   = imgUrl
                    });
                }

                if (changeVisibility)
                {
                    manager.EnqueueAudienceChange(new AudienceChangeNotification {
                        ChangeType = TypeAudienceChange.DisableVisibility,
                        idAudience = viewModel.audience.Id
                    });
                }

                return(Json(new { success = true, message = "Audience edited successfully", audienceId = viewModel.audience.Id }));
            }
            catch (Exception ex) {
                return(Json(new { error = "Error editing Audience" }));
            }
        }
示例#23
0
        public ActionResult CreateChannel([FromBody] AudienceChannelViewModel model)
        {
            string           audienceId        = TempData["tdIdAudience"].ToString();
            Guid             productId         = Guid.NewGuid();
            Guid             audienceChannelId = Guid.NewGuid();
            Guid             settingId         = Guid.NewGuid();
            AudienceDocument audience          = _audienceChannelManager.getAudienceById(audienceId);

            (string channelTypeId, string channelTypeName)channelType = ("", "");
            string detail = string.Empty;

            if (model.EmailProviderSelected != string.Empty && model.EmailProviderSelected != null)
            {
                AudienceChannelViewModel viewModel = new AudienceChannelViewModel();

                if (model.EmailProviderSelected == ChannelProvider.MailChimpId)
                {
                    detail = viewModel.GetSubscribersMailChimp(model.emailProductForm.mailChimpForm.ApiToken, model.emailProductForm.mailChimpForm.ListId);
                }
                else if (model.EmailProviderSelected == ChannelProvider.CampaignMonitorId)
                {
                    detail = viewModel.GetSubscribersCampaignMonitor(model.emailProductForm.campaignMonitorForm.ApiToken, model.emailProductForm.campaignMonitorForm.ListId);
                }
                else if (model.EmailProviderSelected == ChannelProvider.SendGridId)
                {
                    detail = viewModel.GetSubscribersSendGrid(model.emailProductForm.sendGridForm.ApiToken, model.emailProductForm.sendGridForm.ListId);
                }
                else if (model.EmailProviderSelected == ChannelProvider.AweberId)
                {
                    detail = viewModel.GetSubscribersAweber((ProviderAWeberApiResult)TempData["AweberApiTokenData"], model.emailProductForm.aweberForm.ListId);
                }

                channelType             = KindAds.Comun.Structures.SChannelType.Email;
                model.channel.ChannelId = channelType.channelTypeId;
                _audienceChannelManager.AddEmailProduct(model, audienceChannelId.ToString(), settingId.ToString(), productId.ToString(), detail);
                model.channel.Id        = audienceChannelId.ToString();
                model.channel.ProductId = productId.ToString();
                _audienceChannelManager.AddEmailProductSettings(audience.WebSiteUrl, model, productId.ToString());
            }

            if (model.PushProviderSelected != string.Empty && model.PushProviderSelected != null)
            {
                channelType             = KindAds.Comun.Structures.SChannelType.PushNotification;
                model.channel.ChannelId = channelType.channelTypeId;
                _audienceChannelManager.AddPushProduct(model, audienceChannelId.ToString(), settingId.ToString(), productId.ToString(), string.Empty);
                model.channel.Id        = audienceChannelId.ToString();
                model.channel.ProductId = productId.ToString();
                _audienceChannelManager.AddPushProductSettings(audience.WebSiteUrl, model, productId.ToString());
                detail = "";
            }
            if (model.WebSpaceProviderSelected != string.Empty)
            {
                channelType = KindAds.Comun.Structures.SChannelType.WebsiteAdSpace;
                //todo
            }

            string productProviderId = _audienceChannelManager.GetProductProviderId(model);
            // add AudienceChannelDocument and Questions
            var selectedCat = audienceManager.GetIndustrieById(audience.CategoryId);

            BindQuestionsImageDescriptionAudienceChannelModel(model);
            model.channel.AudienceId = audienceId;
            model.channel.Visibility = audience.Visibility ? model.channel.Visibility : audience.Visibility;
            model.channel.IsActive   = audience.Verified;
            model.channel.Detail     = detail;
            model.channel.LastProviderDataUpdated = DateUtils.GetMexicanDateTimeNow();
            model.channel.Category          = selectedCat.Name;
            model.channel.SubCategory       = selectedCat.SubIndustries.Where(s => s.Id == audience.SubCategoryId).SingleOrDefault().Name;
            model.channel.AudienceName      = audience.Title;
            model.channel.ChannelType       = channelType.channelTypeName;
            model.channel.providerName      = SChannelProvider.Providers.SingleOrDefault(p => p.providerId == productProviderId).description;
            model.channel.ProductProviderId = productProviderId;
            model.channel.Rating            = string.Empty;
            model.channel.Score             = string.Empty;
            var operationResult = _audienceChannelManager.AddAudienceChannel(model);

            return(operationResult ? Json(new { success = true, message = "Audience Channel created successfully" }) : Json(new { error = "Error creating Audience Channel" }));
        }