Example #1
0
        /// <summary>
        /// Initialises the client from Environment Variables.
        /// </summary>
        public FaxClient(HttpMessageHandler messageHandler = null, ApiRoot apiRoot = ApiRoot.InterFAX_Default)
        {
            var username = Environment.GetEnvironmentVariable(UsernameConfigKey);
            var password = Environment.GetEnvironmentVariable(PasswordConfigKey);

            Initialise(username, password, apiRoot: apiRoot, messageHandler: messageHandler);
        }
Example #2
0
        public async Task <IList <Property> > GetPropertyListFromApiAsync()
        {
            var request = new RestRequest(Method.GET);

            var response = await _client.ExecuteAsync(request);

            ApiRoot apiRootCollection = JsonConvert.DeserializeObject <ApiRoot>(response.Content);

            if (apiRootCollection == null)
            {
                return(new List <Property>());
            }

            var propertyList = apiRootCollection.properties.Select(item => new Property
            {
                Id          = item.id ?? 0,
                Address     = item.address?.ToString(),
                GrossYield  = item.financial?.GetGrossYield(),
                ListPrice   = item.financial?.listPrice ?? 0,
                MonthlyRent = item.financial?.monthlyRent ?? 0,
                YearBuilt   = item.physical?.yearBuilt?.ToString(CultureInfo.InvariantCulture)
            }).ToList();

            return(propertyList);
        }
        public static string AddMovies(string title, string summary, string picture, string genre, double rating)
        {
            Movies movie = new Movies();

            movie.Title   = title;
            movie.Summary = summary;
            movie.Picture = picture;
            movie.Genre   = genre;
            movie.Rating  = rating;

            string json = JsonConvert.SerializeObject(movie);

            HttpWebRequest req = (HttpWebRequest)WebRequest.Create($"{ApiRoot.Apiroot()}/movies");

            req.Method      = "POST";
            req.ContentType = "application/json";

            using (var streamWriter = new StreamWriter(req.GetRequestStream()))
            {
                streamWriter.Write(json);
                streamWriter.Flush();
                streamWriter.Close();
            };

            var httpResponse = (HttpWebResponse)req.GetResponse();

            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                return(streamReader.ReadToEnd());
            }
        }
Example #4
0
        public static string DeleteSavedMovie(int id, int peopleId, int movieId)
        {
            Wishlist deletedMovie = new Wishlist();

            deletedMovie.Id  = id;
            deletedMovie.Pid = peopleId;
            deletedMovie.Mid = movieId;

            string json = JsonConvert.SerializeObject(deletedMovie);

            // MessageBox.Show($"{json}");

            // System.Diagnostics.Debug.WriteLine($"**************** --- {json}");

            HttpWebRequest req = (HttpWebRequest)WebRequest.Create($"{ApiRoot.Apiroot()}/wishlist/{id}");

            req.Method      = "DELETE";
            req.ContentType = "application/json";


            using (var streamWriter = new StreamWriter(req.GetRequestStream()))
            {
                streamWriter.Write(json);
                streamWriter.Flush();

                streamWriter.Close();
            };

            var httpResponse = (HttpWebResponse)req.GetResponse();

            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                return(streamReader.ReadToEnd());
            }
        }
Example #5
0
        public static string AddUsers(string fName, string lName, string password, string email, string uName)
        {
            Users user = new Users();

            user.Fname   = fName;
            user.Lname   = lName;
            user.Passwrd = password;
            user.Email   = email;
            user.Uname   = uName;

            string json = JsonConvert.SerializeObject(user);

            HttpWebRequest req = (HttpWebRequest)WebRequest.Create($"{ApiRoot.Apiroot()}/users");

            req.Method      = "POST";
            req.ContentType = "application/json";

            using (var streamWriter = new StreamWriter(req.GetRequestStream()))
            {
                streamWriter.Write(json);
                streamWriter.Flush();
                streamWriter.Close();
            };

            var httpResponse = (HttpWebResponse)req.GetResponse();

            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                return(streamReader.ReadToEnd());
            }
        }
        public static async Task <ApiRoot> ReadApiRoot(string strUri = "")
        {
            if (!string.IsNullOrEmpty(strUri))
            {
                _strApiRootUri = strUri;
            }

            try
            {
                Task <System.IO.Stream> streamTask = _client.GetStreamAsync(_strApiRootUri);
                ApiRoot apiRoot = await JsonSerializer.DeserializeAsync <ApiRoot>(await streamTask);

                _apiRoot = new ApiRoot(apiRoot);

                return(apiRoot);
            }
            catch (Exception ex)
            {
#if SHOW_DEBUG
                Console.WriteLine("\nException Caught!");
                Console.WriteLine("Message :{0} ", ex.Message);
#endif
                //return null;
                throw ex;
            }
        }
        protected override void Execute(CodeActivityContext context)
        {
            ITracingService      tracing         = context.GetExtension <ITracingService>();
            IWorkflowContext     workflowContext = context.GetExtension <IWorkflowContext>();
            IOrganizationService service         = context.GetExtension <IOrganizationServiceFactory>().CreateOrganizationService(workflowContext.InitiatingUserId);

            FuncLibrary aux = new FuncLibrary();
            find_marketingautomationintegration sendGridAccount = aux.GetMailchimpInfo(service);

            Apihelper.InitializeClient(sendGridAccount.find_SendGridIntegration);
            ApiRoot apiRoot = new ApiRoot();


            List            list            = service.Retrieve(MarketingList.Get(context).LogicalName, MarketingList.Get(context).Id, new ColumnSet("find_sendgridid")).ToEntity <List>();
            Campaign        campaign        = service.Retrieve(Campaign.Get(context).LogicalName, Campaign.Get(context).Id, new ColumnSet("name")).ToEntity <Campaign>();
            EntityReference memberReference = new EntityReference(MemberType.Get(context), new Guid(MemberId.Get(context)));
            find_metric     metric          = GetMetricByCampaign(service, campaign);


            if (HasMetricDetailsToMember(service, metric, memberReference))
            {
                return;
            }

            CreateMetricDetails(service, metric, memberReference);
            SyncMemberTypeToSendGrid(service, memberReference, list, apiRoot, tracing);
        }
Example #8
0
        private Report GetReportOfMetric(ApiRoot root, string server, Campaign campaign)
        {
            Task <Report> t = Task.Run(() => root.GetReportsEmail(server, campaign.find_mailChimpCampaignID));

            t.Wait();

            return(t.IsCompleted ? t.Result : throw new Exception());
        }
Example #9
0
        private EmailActivity GetlastActivityByMetricDetail(ApiRoot root, string server, Campaign campaign, string md5Mail)
        {
            Task <EmailActivity> t = Task.Run(() => root.GetEmailActivity(server, campaign.find_mailChimpCampaignID, md5Mail));

            t.Wait();

            return(t.IsCompleted ? t.Result : throw new Exception());
        }
Example #10
0
        private void UpdateAsync(IPluginExecutionContext context, IOrganizationService service, ITracingService tracingService)
        {
            CrmEarlyBound.Campaign target   = ((Entity)context.InputParameters["Target"]).ToEntity <CrmEarlyBound.Campaign>();
            CrmEarlyBound.Campaign campaign = service.Retrieve(target.LogicalName, target.Id, new ColumnSet("name", "find_platformmarketing", "find_fromname", "find_subject", "find_mailchimpcampaignid", "find_sendgridid")).ToEntity <CrmEarlyBound.Campaign>();


            if (target.Attributes.ContainsKey("find_crm_integration_count"))
            {
                if (campaign.find_PlatformMarketing == false)
                {
                    tracingService.Trace("a");
                    OrganizationRequest request = new OrganizationRequest("find_SyncMailchimpToCrm");
                    request.Parameters["Campaign"] = target.ToEntityReference();
                    service.Execute(request);
                }
                else
                {
                    OrganizationRequest request = new OrganizationRequest("find_SyncSendgridToCrm");
                    request.Parameters["Campaign"] = target.ToEntityReference();
                    service.Execute(request);
                }
            }
            else if (target.Attributes.ContainsKey("find_mailchimp_integration_count"))
            {
                List <List> listsToUpdate = GetAllMarketingListsAssociatedToCampaign(service, target);

                if (listsToUpdate.Count == 0)
                {
                    target.find_mailchimp_integration_count = 0;
                    return;
                }

                FuncLibrary aux = new FuncLibrary();
                find_marketingautomationintegration mailChimpAccount = aux.GetMailchimpInfo(service);
                ApiRoot root = new ApiRoot();

                if (campaign.find_PlatformMarketing == false)
                {
                    ProcessMailChimpListsAndCampaign(service, campaign, mailChimpAccount, root, listsToUpdate);
                }
                else
                {
                    ProcessSendGridLists(service, campaign, mailChimpAccount, root, listsToUpdate);
                }

                foreach (List list in listsToUpdate)
                {
                    list.find_mailchimp_integration_count++;
                    service.Update(list);
                }
            }
            else if (target.Attributes.ContainsKey("find_mail_integration_started"))
            {
                target.find_crm_integration_count = 1;

                service.Update(target);
            }
        }
Example #11
0
        private void PutMemberToMailChimp(ApiRoot root, string server, string listId, string mailMd5, List list, string mail)
        {
            Group  group  = new Group(true);
            Member member = new Member(mail, group);

            Task task = Task.Run(() => root.PutMember(member, server, listId, list.find_MailChimpListId, mailMd5));

            task.Wait();
        }
Example #12
0
        public static List <Users> RetrieveUsersFromApi()
        {
            using (WebClient wc = new WebClient())
            {
                string json = wc.DownloadString($"{ApiRoot.Apiroot()}/users");

                List <Users> users = JsonConvert.DeserializeObject <List <Users> >(json);

                return(users);
            }
        }
        public static List <Movies> RetrieveMoviesFromApi()
        {
            using (WebClient wc = new WebClient())
            {
                string json = wc.DownloadString($"{ApiRoot.Apiroot()}/movies");

                List <Movies> movies = JsonConvert.DeserializeObject <List <Movies> >(json);

                return(movies);
            }
        }
        public static List <Wishlist> RetrieveSavedMoviesFromApi()
        {
            using (WebClient wc = new WebClient())
            {
                string json = wc.DownloadString($"{ApiRoot.Apiroot()}/wishlist");

                List <Wishlist> wishlist = JsonConvert.DeserializeObject <List <Wishlist> >(json);

                return(wishlist);
            }
        }
Example #15
0
        private void SendCampaingInMailChimp(IOrganizationService service, Campaign campaign)
        {
            FuncLibrary aux = new FuncLibrary();
            find_marketingautomationintegration mailChimpObj = aux.GetMailchimpInfo(service);
            ApiRoot root = new ApiRoot();

            if (SendEmails(campaign, mailChimpObj, root))
            {
                campaign.find_mail_integration_started = true;
                service.Update(campaign);
            }
        }
Example #16
0
        private void CreateListSendGrid(IOrganizationService service, List newList, ApiRoot root)
        {
            Group listSend             = new Group(newList.ListName);
            Task <MailChimpCampaign> t = Task.Run(() => root.PostList(listSend));

            t.Wait();
            if (t.IsCompleted)
            {
                newList.find_SendGridId = t.Result.Id;
                service.Update(newList);
            }
        }
Example #17
0
        private void PostReplicateCampaignInSendGrid(IOrganizationService service, ApiRoot root, find_marketingautomationintegration mailChimpAccount, Campaign campaign, Campaign newCampaign)
        {
            Apihelper.InitializeClient(mailChimpAccount.find_SendGridIntegration);

            Task <MailChimpCampaign> t = Task.Run(() => root.PostCopySingleSend(campaign.find_SendGridId));

            t.Wait();
            if (t.IsCompleted)
            {
                newCampaign.find_SendGridId = t.Result.Id;
                service.Update(newCampaign);
            }
        }
        private Reports GetReportOfMetric(ApiRoot root, Campaign campaign, ITracingService tracing)
        {
            Task <Reports> t = Task.Run(() => root.GetMetricsFromSingleSend(campaign.find_SendGridId, tracing));

            t.Wait();
            if (t.IsCompleted)
            {
                return(t.Result);
            }
            else
            {
                throw new Exception();
            }
        }
Example #19
0
        private void PostReplicateCampaignInMailchimp(IOrganizationService service, ApiRoot root, find_marketingautomationintegration mailChimpAccount, Campaign campaign, Campaign newCampaign)
        {
            Apihelper.InitializeClient(mailChimpAccount.find_MailChimpIntegration);
            string[] server = mailChimpAccount.find_MailChimpIntegration.Split('-');

            Task <MailChimpCampaign> t = Task.Run(() => root.PostCopyCampaign(server[1], campaign.find_mailChimpCampaignID));

            t.Wait();
            if (t.IsCompleted)
            {
                newCampaign.find_mailChimpCampaignID = t.Result.Id;
                service.Update(newCampaign);
            }
        }
Example #20
0
        private bool CheckIfMemberIsMailChimp(ApiRoot root, string server, string listId, string mailMd5)
        {
            Task <bool> t = Task.Run(() => root.GetMember(server, listId, mailMd5));

            t.Wait();
            if (t.IsCompleted)
            {
                return(t.Result);
            }
            else
            {
                throw new Exception();
            }
        }
Example #21
0
        private void Initialise(string username, string password, ApiRoot apiRoot, HttpMessageHandler messageHandler = null, HttpClient httpClient = null)
        {
            if (string.IsNullOrEmpty(username))
            {
                throw new ArgumentException($"{UsernameConfigKey} has not been set.");
            }

            if (string.IsNullOrEmpty(password))
            {
                throw new ArgumentException($"{PasswordConfigKey} has not been set.");
            }

            Account   = new Account(this);
            Inbound   = new Inbound(this);
            Outbound  = new Outbound(this);
            Documents = new Documents(this);

            HttpClient = messageHandler == null ? new HttpClient() : new HttpClient(messageHandler);
            HttpClient = httpClient != null ? httpClient : HttpClient;

            var root = "";

            switch (apiRoot)
            {
            case ApiRoot.InterFAX_PCI:
                root = "https://rest-sl.interfax.net";
                break;

            case ApiRoot.InterFAX_Default:
                root = "https://rest.interfax.net";
                break;
            }

            HttpClient.BaseAddress = new Uri(root);
            HttpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            HttpClient.DefaultRequestHeaders.Add("Authorization",
                                                 new List <string> {
                $"Basic {Utils.Base64Encode($"{username}:{password}")}"
            });

            JsonConvert.DefaultSettings = () =>
            {
                var settings = new JsonSerializerSettings();
                settings.Converters.Add(new StringEnumConverter {
                    CamelCaseText = true
                });
                return(settings);
            };
        }
Example #22
0
        private void ScheduleCampaign(IOrganizationService service, Campaign campaign, string dateTime)
        {
            FuncLibrary aux = new FuncLibrary();
            find_marketingautomationintegration mailChimpObj = aux.GetMailchimpInfo(service);
            ApiRoot root = new ApiRoot();

            if (campaign.find_PlatformMarketing == false)
            {
                PostActionScheduleMail(service, campaign, mailChimpObj, root, dateTime);
            }
            else
            {
                PutScheduleNow(service, campaign, mailChimpObj, root, dateTime);
            }
        }
        private void PutMemberToSendGrid(string email, List list, ApiRoot root, ITracingService tracing)
        {
            List <string> listIds = new List <string>();

            listIds.Add(list.find_SendGridId);
            List <Contacts> listContacts = new List <Contacts>();
            Contacts        contact      = new Contacts(email);

            listContacts.Add(contact);
            MemberSendgrid member = new MemberSendgrid(listIds, listContacts);

            Task t = Task.Run(() => root.PostOrPutMember(member, tracing));

            t.Wait();
        }
Example #24
0
        private void TestActionCampaign(IOrganizationService service, Campaign campaign, string emails, ITracingService tracing)
        {
            FuncLibrary aux = new FuncLibrary();
            find_marketingautomationintegration mailChimpObj = aux.GetMailchimpInfo(service);
            ApiRoot root = new ApiRoot();

            if (campaign.find_PlatformMarketing == false)
            {
                tracing.Trace("aq");
                PostActionSendTestEmailsMailchimp(campaign, mailChimpObj, root, emails, tracing);
            }
            else
            {
                PostActionSendTestEmailsSendGrid(mailChimpObj, root, emails);
            }
        }
Example #25
0
        protected override void Execute(CodeActivityContext context)
        {
            ITracingService      tracing         = context.GetExtension <ITracingService>();
            IWorkflowContext     workflowContext = context.GetExtension <IWorkflowContext>();
            IOrganizationService service         = context.GetExtension <IOrganizationServiceFactory>().CreateOrganizationService(workflowContext.InitiatingUserId);

            FuncLibrary aux = new FuncLibrary();
            find_marketingautomationintegration mailChimpAccount = aux.GetMailchimpInfo(service);
            ApiRoot root = new ApiRoot();

            Campaign campaign        = service.Retrieve(Campaign.Get(context).LogicalName, Campaign.Get(context).Id, new ColumnSet("find_platformmarketing", "find_fromname", "find_subject", "name", "find_mailchimpcampaignid", "find_sendgridid")).ToEntity <Campaign>();
            Guid     newGuidCampaign = CreateCopyFromCampaign(service, campaign, root, mailChimpAccount);

            CampaingId.Set(context, newGuidCampaign.ToString());
            tracing.Trace(CampaingId.ToString());
        }
Example #26
0
        private void AssociateMarketingListToSendGrid(ApiRoot root, List <List> listLists, CrmEarlyBound.Campaign campaign)
        {
            List <string> listSendGridId = new List <string>();

            foreach (List lists in listLists)
            {
                listSendGridId.Add(lists.find_SendGridId);
            }

            SendTo     sendTo     = new SendTo(listSendGridId);
            SingleSend singleSend = new SingleSend(sendTo);

            Task t = Task.Run(() => root.PathSingleSend(singleSend, campaign.find_SendGridId));

            t.Wait();
        }
        protected override void Execute(CodeActivityContext context)
        {
            ITracingService      tracing         = context.GetExtension <ITracingService>();
            IWorkflowContext     workflowContext = context.GetExtension <IWorkflowContext>();
            IOrganizationService service         = context.GetExtension <IOrganizationServiceFactory>().CreateOrganizationService(workflowContext.InitiatingUserId);

            FuncLibrary aux = new FuncLibrary();
            find_marketingautomationintegration accountObj = aux.GetMailchimpInfo(service);

            Apihelper.InitializeClient(accountObj.find_SendGridIntegration);
            ApiRoot root = new ApiRoot();

            Campaign    campaign = service.Retrieve(Campaign.Get(context).LogicalName, Campaign.Get(context).Id, new ColumnSet("name", "find_sendgridid")).ToEntity <Campaign>();
            find_metric metric   = GetMetricByCampaign(service, campaign);

            UpdateMetric(service, root, campaign, metric, tracing);
        }
Example #28
0
        private void UpdateMetric(IOrganizationService service, ApiRoot root, string server, Campaign campaign, find_metric metric)
        {
            Report report = GetReportOfMetric(root, server, campaign);

            metric.find_Bounced              = report.bounces.hard_bounces + report.bounces.soft_bounces;
            metric.find_PeopleWhoClicked     = report.clicks.unique_clicks;
            metric.find_PeopleWhoOpened      = report.opens.unique_opens;
            metric.find_SuccessfulDeliveries = report.emails_sent - (report.bounces.hard_bounces + report.bounces.soft_bounces);
            metric.find_Send             = report.emails_sent;
            metric.find_TotalClicks      = report.clicks.clicks_total;
            metric.find_TotalTimesOpened = report.opens.opens_total;
            metric.find_UnOpened         = report.emails_sent - report.opens.unique_opens;
            metric.find_UnSubscribers    = report.unsubscribed;
            metric.find_ForwardCount     = report.forwards.forwards_count;
            metric.find_ForwardsOpens    = report.forwards.forwards_opens;

            service.Update(metric);
        }
        private void UpdateMetric(IOrganizationService service, ApiRoot root, Campaign campaign, find_metric metric, ITracingService tracing)
        {
            Reports report = GetReportOfMetric(root, campaign, tracing);

            metric.find_Bounced              = report.results[0].stats.bounces;
            metric.find_PeopleWhoClicked     = report.results[0].stats.unique_clicks;
            metric.find_PeopleWhoOpened      = report.results[0].stats.unique_opens;
            metric.find_SuccessfulDeliveries = report.results[0].stats.delivered - report.results[0].stats.bounces;
            metric.find_Send             = report.results[0].stats.delivered;
            metric.find_TotalClicks      = report.results[0].stats.clicks;
            metric.find_TotalTimesOpened = report.results[0].stats.opens;
            metric.find_UnOpened         = report.results[0].stats.delivered - report.results[0].stats.unique_opens;
            metric.find_UnSubscribers    = report.results[0].stats.unsubscribes;
            metric.find_ForwardCount     = 0;
            metric.find_ForwardsOpens    = 0;

            service.Update(metric);
        }
Example #30
0
        protected override void Execute(CodeActivityContext context)
        {
            ITracingService      tracing         = context.GetExtension <ITracingService>();
            IWorkflowContext     workflowContext = context.GetExtension <IWorkflowContext>();
            IOrganizationService service         = context.GetExtension <IOrganizationServiceFactory>().CreateOrganizationService(workflowContext.InitiatingUserId);

            FuncLibrary aux = new FuncLibrary();
            find_marketingautomationintegration mailChimpObj = aux.GetMailchimpInfo(service);

            Apihelper.InitializeClient(mailChimpObj.find_MailChimpIntegration);
            ApiRoot root = new ApiRoot();

            string[] server = mailChimpObj.find_MailChimpIntegration.Split('-');

            Campaign    campaign = service.Retrieve(Campaign.Get(context).LogicalName, Campaign.Get(context).Id, new ColumnSet("name", "find_mailchimpcampaignid")).ToEntity <Campaign>();
            find_metric metric   = GetMetricByCampaign(service, campaign);
            List <find_metricdetails> metricDetailsList = GetMetricDetailsByMetric(service, metric);

            ProcessAtivitiesByMember(service, metricDetailsList, aux, root, server[1], campaign, metric, tracing);
        }