private static async Task PrintSmtpCapabilities(MailContainer mailContainer)
        {
            using (var client = new SmtpClient())
            {
                await client.ConnectAsync(mailContainer.IsDockerInDocker?mailContainer.IPAddress : "localhost", mailContainer.IsDockerInDocker? 1025 : mailContainer.Ports[1025]);

                Console.WriteLine($"Smtp capabilites: {client.Capabilities}");
            }
        }
        private async Task PrintSmtpCapabilities(MailContainer mailContainer)
        {
            var host = mailContainer.IsDockerInDocker ? mailContainer.IPAddress : "localhost";
            var port = mailContainer.IsDockerInDocker ? 1025 : mailContainer.Ports[1025];

            using (var client = new SmtpClient())
            {
                await client.ConnectAsync(host, port);

                _testOutput.WriteLine($"Smtp capabilites: {client.Capabilities}");
            }
        }
예제 #3
0
    public static List <CampaignLog> ProcessXmlFilter(Guid CampaignId, string trackKey, int attemp, string xmlFilter,
                                                      int portalId)
    {
        List <CampaignLog> listResult = new List <CampaignLog>();
        MailContainer      mailContainer;

        try
        {
            mailContainer = new MailContainer();

            XmlSerializer serializer = new XmlSerializer(mailContainer.GetType());

            MemoryStream memoryStream = new MemoryStream(Encoding.ASCII.GetBytes(xmlFilter));

            mailContainer = (MailContainer)serializer.Deserialize(memoryStream);

            StringBuilder queryPotentialUser = new StringBuilder();
            StringBuilder queryUser          = new StringBuilder();
            StringBuilder queryOrganization  = new StringBuilder();
            StringBuilder querySolution      = new StringBuilder();


            MIFNEXSOEntities ent = new MIFNEXSOEntities();



            foreach (MailFilter mailFilter in mailContainer.MailFilter)
            {
                switch (mailFilter.Table)
                {
                case "PotentialUsers":
                {
                    switch (mailFilter.Field)
                    {
                    case "Country":
                    {
                        queryPotentialUser.Append(GetSqlClause(mailFilter));
                        break;
                    }

                    case "Language":
                    {
                        queryPotentialUser.Append(GetSqlClause(mailFilter));
                        break;
                    }

                    case "Source":
                    {
                        queryPotentialUser.Append(GetSqlClause(mailFilter));
                        break;
                    }
                    }
                    break;
                }


                case "UserProperties":
                {
                    switch (mailFilter.Field)
                    {
                    case "Country":
                    {
                        queryUser.Append(GetSqlClause(mailFilter));
                        break;
                    }

                    case "Language":
                    {
                        queryUser.Append(GetSqlClause(mailFilter));
                        break;
                    }
                    //case "CustomerType":
                    //    {

                    //        break;
                    //    }
                    case "[AllowNexsoNotifications]":
                    {
                        if (mailFilter.FilterValue.Count > 0)
                        {
                            if (mailFilter.FilterValue[0] == "1")
                            {
                                queryUser.Append(GetSqlClause(mailFilter));
                            }
                        }
                        break;
                    }
                    }
                    break;
                }

                case "UserPropertiesLists":
                {
                    switch (mailFilter.Field)
                    {
                    case "[Key]":
                    {
                        queryUser.Append(GetSqlClause(mailFilter));
                        break;
                    }
                    }
                    break;
                }

                case "Organization":
                {
                    switch (mailFilter.Field)
                    {
                    case "Country":
                    {
                        queryOrganization.Append(GetSqlClause(mailFilter));
                        break;
                    }
                    }
                    break;
                }

                case "Solution":
                {
                    switch (mailFilter.Field)
                    {
                    case "Language":
                    {
                        querySolution.Append(GetSqlClause(mailFilter));
                        break;
                    }

                    case "ChallengeReference":
                    {
                        querySolution.Append(GetSqlClause(mailFilter));
                        break;
                    }

                    case "SolutionState":
                    {
                        querySolution.Append(GetSqlClause(mailFilter));
                        break;
                    }

                    case "FUNC:GetScore(Solution.SolutionId,'JUDGE')":
                    {
                        querySolution.Append(GetSqlClause(mailFilter));
                        break;
                    }

                    case "FUNC:WordCount(Solution.SolutionId)":
                    {
                        querySolution.Append(GetSqlClause(mailFilter));
                        break;
                    }
                    }
                    break;
                }
                }
            }

            foreach (MailFilter mailFilter in mailContainer.MailFilter)
            {
                switch (mailFilter.Table)
                {
                case "&&1":
                {
                    switch (mailFilter.Field)
                    {
                    case "UsePotentialUser":
                    {
                        if (mailFilter.FilterValue[0] == "0")
                        {
                            queryPotentialUser = null;
                        }
                        break;
                    }

                    case "UseUser":
                    {
                        if (mailFilter.FilterValue[0] == "0")
                        {
                            queryUser = null;
                        }
                        break;
                    }

                    case "UseOrganization":
                    {
                        if (mailFilter.FilterValue[0] == "0")
                        {
                            queryOrganization = null;
                        }
                        break;
                    }

                    case "UseSolution":
                    {
                        if (mailFilter.FilterValue[0] == "0")
                        {
                            querySolution = null;
                        }
                        break;
                    }
                    }
                    break;
                }
                }
            }
            List <UserProperty>         queryPotentialUserEntity    = null;
            IEnumerable <PotentialUser> queryPotentialUserEntityInt = null;
            IEnumerable <UserProperty>  querySolutionEntity         = null;
            IEnumerable <UserProperty>  queryUserEntity             = null;
            IEnumerable <UserProperty>  queryOrganizationEntity     = null;
            if (queryPotentialUser != null)
            {
                queryPotentialUser.Insert(0, " SELECT  * FROM POTENTIALUSERS"
                                          + " where 1=1 ");
                queryPotentialUserEntityInt = ent.ExecuteStoreQuery <PotentialUser>(queryPotentialUser.ToString());
                queryPotentialUserEntity    = new List <UserProperty>();
                foreach (var item in queryPotentialUserEntityInt)
                {
                    queryPotentialUserEntity.Add(new UserProperty()
                    {
                        email     = item.Email,
                        FirstName = item.FirstName,
                        LastName  = item.LastName
                    }

                                                 );
                }
            }

            if (queryUser != null)
            {
                queryUser.Insert(0, " SELECT        UserProperties.* " +
                                 " FROM UserProperties left JOIN UserPropertiesLists ON UserProperties.UserId = UserPropertiesLists.UserPropertyId"
                                 + " where 1=1 ");
                queryUserEntity = ent.ExecuteStoreQuery <UserProperty>(queryUser.ToString());
            }
            if (queryOrganization != null)
            {
                queryOrganization.Insert(0, " SELECT     UserProperties.* " +
                                         " FROM         Organization INNER JOIN UserOrganization ON Organization.OrganizationID = UserOrganization.OrganizationID " +
                                         " INNER JOIN UserProperties ON UserOrganization.UserID = UserProperties.UserId"
                                         + " where 1=1 ");
                queryOrganizationEntity = ent.ExecuteStoreQuery <UserProperty>(queryOrganization.ToString());
            }


            if (querySolution != null)
            {
                querySolution.Insert(0, " SELECT     UserProperties.* FROM         Solution INNER JOIN UserProperties ON Solution.CreatedUserId = UserProperties.UserId "
                                     + " where 1=1 ");
                querySolutionEntity = ent.ExecuteStoreQuery <UserProperty>(querySolution.ToString());
            }
            IEnumerable <UserProperty> resultfinal = queryUserEntity;


            if (queryOrganizationEntity != null)
            {
                if (resultfinal == null)
                {
                    resultfinal = queryOrganizationEntity;
                }
                else
                {
                    resultfinal = resultfinal.Concat(queryOrganizationEntity);
                }
            }

            if (querySolutionEntity != null)
            {
                if (resultfinal == null)
                {
                    resultfinal = querySolutionEntity;
                }
                else
                {
                    resultfinal = resultfinal.Concat(querySolutionEntity);
                }
            }
            if (queryPotentialUserEntity != null)
            {
                if (resultfinal == null)
                {
                    resultfinal = queryPotentialUserEntity;
                }
                else
                {
                    resultfinal = resultfinal.Concat(queryPotentialUserEntity);
                }
            }

            CampaignComponent campaign = new CampaignComponent(CampaignId);

            if (mailContainer.UserProperty.Count > 0)
            {
                if (resultfinal == null)
                {
                    resultfinal = mailContainer.UserProperty;
                }
                else
                {
                    resultfinal = resultfinal.Concat(mailContainer.UserProperty).ToList();
                }
            }



            if (resultfinal != null)
            {
                var comparer = new UserComparer();
                foreach (var item in resultfinal.Distinct(comparer).ToList())
                {
                    try
                    {
                        var user = UserController.GetUserById(portalId, item.UserId);

                        listResult.Add(getCampaignLog(campaign, item, user));
                    }
                    catch (Exception)
                    {
                    }
                }
            }
        }



        catch (Exception)
        {
        }
        return(listResult);
    }