Exemplo n.º 1
0
        public int SendMail()
        {
            int processed = 0;

            using (SPLongOperation operation = new SPLongOperation(this.Parent))
            {
                operation.Begin();

                using (new SPMonitoredScope("Mailing SendMail"))
                {
                    if (SPContext.Current.Web.CurrentUser != null)
                    {
                        try
                        {
                            if (ZimbraConfiguration == null)
                            {
                                return(0);
                            }

                            SmtpClient client = new SmtpClient(ZimbraConfiguration.Server.SendMailHost, zimbraconfiguration.Server.SendMailPort);
                            client.Credentials    = new System.Net.NetworkCredential(ZimbraConfiguration.Server.SendMailUserName, ZimbraConfiguration.Server.SendMailPassword);
                            client.DeliveryMethod = SmtpDeliveryMethod.Network;
                            client.DeliveryFormat = SmtpDeliveryFormat.International;
                            //client.SendCompleted += client_SendCompleted;

                            bool more          = true;
                            int  startRowIndex = SelectOnlineVersions() - 10;
                            int  maximumRows   = 200;
                            int  totalrows     = 0;

                            List <Parameter>          collection  = new List <Parameter>();
                            ClubCloud_Vereniging_View queryresult = null;

                            while (more)
                            {
                                try
                                {
                                    queryresult = Client.GetVerenigingenByQuery("00000000", Guid.NewGuid(), new DataSourceSelectArguments {
                                        MaximumRows = maximumRows, StartRowIndex = startRowIndex, RetrieveTotalRowCount = true, SortExpression = ""
                                    }, collection);

                                    if (queryresult != null && queryresult.ClubCloud_Vereniging != null)
                                    {
                                        totalrows = queryresult.TotalRowCount;

                                        foreach (ClubCloud_Vereniging vereniging in queryresult.ClubCloud_Vereniging)
                                        {
                                            if (vereniging.Nummer == "09399" || vereniging.Nummer == "61424")
                                            {
                                                continue;
                                            }

                                            try
                                            {
                                                int nummer;
                                                if (int.TryParse(vereniging.Nummer, out nummer))
                                                {
                                                    MailMessage message = BuidMailMessage(vereniging);

                                                    if (message == null)
                                                    {
                                                        continue;
                                                    }

                                                    List <string> emails = new List <string>();

                                                    if (!string.IsNullOrWhiteSpace(vereniging.EmailKNLTB))
                                                    {
                                                        emails.Add(vereniging.EmailKNLTB);
                                                    }

                                                    if (!string.IsNullOrWhiteSpace(vereniging.EmailOverig))
                                                    {
                                                        emails.Add(vereniging.EmailKNLTB);
                                                    }

                                                    if (!string.IsNullOrWhiteSpace(vereniging.EmailWebSite))
                                                    {
                                                        emails.Add(vereniging.EmailWebSite);
                                                    }

                                                    foreach (string email in emails.Distinct())
                                                    {
                                                        try
                                                        {
                                                            //message.To.Add(new MailAddress("*****@*****.**","Rutger Hemrika", Encoding.UTF8));
                                                            message.To.Add(new MailAddress(email.ToLower(), vereniging.Naam, Encoding.UTF8));
                                                        }
                                                        catch (Exception ex)
                                                        {
                                                            Logger.WriteLog(Logger.Category.Unexpected, ex.Source, ex.Message);
                                                        }
                                                    }

                                                    message.CC.Add(new MailAddress("*****@*****.**", "ClubCloud"));
                                                    message.From   = new MailAddress("*****@*****.**", "ClubCloud");
                                                    message.Sender = new MailAddress("*****@*****.**", "ClubCloud");
                                                    message.ReplyToList.Add(new MailAddress("*****@*****.**", "ClubCloud"));
                                                    message.Priority = MailPriority.Normal;
                                                    message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure | DeliveryNotificationOptions.OnSuccess | DeliveryNotificationOptions.Delay;

                                                    message.Subject = string.Format("ClubCloud : De slimme keuze voor {0}", vereniging.Naam);

                                                    try
                                                    {
                                                        HostingEnvironment.QueueBackgroundWorkItem(ct => Email.SendAsync(message, client));
                                                        //Email.Send(message, client);
                                                        Thread.Sleep(100);
                                                    }
                                                    catch (Exception ex)
                                                    {
                                                        Logger.WriteLog(Logger.Category.Unexpected, ex.Source, ex.Message);
                                                    }
                                                    finally
                                                    {
                                                        //message.Dispose();
                                                    }

                                                    Thread.Sleep(200);
                                                }
                                            }
                                            catch (Exception ex)
                                            {
                                                Logger.WriteLog(Logger.Category.Unexpected, ex.Source, ex.Message);
                                            }
                                        }
                                    }

                                    processed     += maximumRows;
                                    startRowIndex += maximumRows;

                                    if (processed >= totalrows || (queryresult != null && queryresult.ClubCloud_Vereniging.Count == 0))
                                    {
                                        more = false;
                                    }

                                    //more = false;
                                }
                                catch (Exception ex)
                                {
                                    Logger.WriteLog(Logger.Category.Unexpected, ex.Source, ex.Message);
                                }
                                //selectArgs = new DataSourceSelectArguments { MaximumRows = maximumRows, StartRowIndex = startRowIndex, RetrieveTotalRowCount = false, SortExpression = "" };
                                //queryresult = Client.GetVerenigingenByQuery("00000000", Guid.NewGuid(), new DataSourceSelectArguments { MaximumRows = maximumRows, StartRowIndex = startRowIndex, RetrieveTotalRowCount = false, SortExpression = "" }, collection);
                            }
                        }
                        catch (Exception ex)
                        {
                            Logger.WriteLog(Logger.Category.Unexpected, ex.Source, ex.Message);
                        }
                    }
                }
                operation.End(this.Parent.Request.Url.AbsolutePath);
            }
            return(processed);
        }
        public IQueryable <ClubCloud_Vereniging> SelectVerenigingen(string sortByExpression, int startRowIndex, int maximumRows, out int totalRowCount)//, bool retrieveTotalRowCount = true)
        {
            using (new SPMonitoredScope("Verenigingen SelectVerenigingen"))
            {
                if (SPContext.Current.Web.CurrentUser != null)
                {
                    int bondsnummer;
                    ClubCloud_Setting Settings = null;
                    if (int.TryParse(SPContext.Current.Web.CurrentUser.UserId.NameId, out bondsnummer))
                    {
                        Settings = Client.GetSettingById(bondsnummer);
                    }

                    if (Settings != null && Settings.VerenigingId != null)
                    {
                        List <Parameter> collection = new List <Parameter>();


                        Settings.ClubCloud_Vereniging = Client.GetVerenigingById(Settings.VerenigingId.Value, false, Settings);

                        if (Settings.ClubCloud_Vereniging != null)
                        {
                            Settings.ClubCloud_Vereniging.ClubCloud_Accommodatie = Client.GetAccommodatieById(Settings.ClubCloud_Vereniging.AccommodatieId.Value, false, Settings);
                            if (Settings.ClubCloud_Vereniging.ClubCloud_Accommodatie != null)
                            {
                                collection.Add(new Parameter {
                                    DefaultValue = "{" + Settings.ClubCloud_Vereniging.ClubCloud_Accommodatie.Id.ToString() + "}", Name = "AccommodatieId", DbType = DbType.Guid, Direction = ParameterDirection.Input
                                });
                            }
                        }


                        foreach (Parameter where in WhereParameters)
                        {
                            if (collection.Any(w => w.Name == where.Name))
                            {
                                int index = collection.FindIndex(p => p.Name == where.Name);
                                if (index >= 0)
                                {
                                    collection[index] = where;
                                }
                            }
                            else
                            {
                                collection.Add(where);
                            }
                        }

                        DataSourceSelectArguments selectArgs = new DataSourceSelectArguments {
                            MaximumRows = maximumRows, StartRowIndex = startRowIndex, RetrieveTotalRowCount = true, SortExpression = sortByExpression
                        };
                        ClubCloud_Vereniging_View queryresult = Client.GetVerenigingenByQuery(bondsnummer.ToString(), Settings.VerenigingId.Value, new DataSourceSelectArguments {
                            MaximumRows = maximumRows, StartRowIndex = startRowIndex, RetrieveTotalRowCount = true, SortExpression = sortByExpression
                        }, collection);

                        totalRowCount = queryresult.TotalRowCount;


                        if (totalRowCount > 0)
                        {
                            foreach (ClubCloud_Vereniging Vereniging in queryresult.ClubCloud_Vereniging)
                            {
                                Vereniging.ClubCloud_Functionaris      = new System.Collections.ObjectModel.ObservableCollection <ClubCloud_Functionaris>(Client.GetFunctionarissenForVerenigingById(Vereniging.Id, false, Settings));
                                Vereniging.ClubCloud_Lidmaatschap      = new System.Collections.ObjectModel.ObservableCollection <ClubCloud_Lidmaatschap>(Client.GetLidmaatschappenForVerenigingById(Vereniging.Id, false, Settings));
                                Vereniging.ClubCloud_Bestuursorgaan    = new System.Collections.ObjectModel.ObservableCollection <ClubCloud_Bestuursorgaan>(Client.GetBestuursorganenForVerenigingById(Vereniging.Id, false, Settings));
                                Vereniging.ClubCloud_District          = Client.GetDistrictForVerenigingById(Vereniging.Id, false, Settings);
                                Vereniging.ClubCloud_Rechtsvorm        = Client.GetRechtsvormForVerenigingById(Vereniging.Id, false, Settings);
                                Vereniging.ClubCloud_Accommodatie      = Client.GetAccommodatieForVerenigingById(Vereniging.Id, false, Settings);
                                Vereniging.ClubCloud_Address           = new System.Collections.ObjectModel.ObservableCollection <ClubCloud_Address>(Client.GetAddressenForVerenigingById(Vereniging.Id, false, Settings));
                                Vereniging.ClubCloud_Regio             = Client.GetRegioForVerenigingById(Vereniging.Id, false, Settings);
                                Vereniging.ClubCloud_Afhang            = new System.Collections.ObjectModel.ObservableCollection <ClubCloud_Afhang>(Client.GetAfhangenForVerenigingById(Vereniging.Id, false, Settings));
                                Vereniging.ClubCloud_Sponsor           = new System.Collections.ObjectModel.ObservableCollection <ClubCloud_Sponsor>(Client.GetSponsorenForVerenigingById(Vereniging.Id, false, Settings));
                                Vereniging.ClubCloud_Baanschema        = new System.Collections.ObjectModel.ObservableCollection <ClubCloud_Baanschema>(Client.GetBaanschemasForVerenigingById(Vereniging.Id, false, Settings));
                                Vereniging.ClubCloud_Lidmaatschapsoort = new System.Collections.ObjectModel.ObservableCollection <ClubCloud_Lidmaatschapsoort>(Client.GetLidmaatschapsoortenForVerenigingById(Vereniging.Id, false, Settings));
                            }
                        }
                        return(queryresult.ClubCloud_Vereniging.AsQueryable <ClubCloud_Vereniging>());
                    }
                }
            }

            totalRowCount = 0;
            return(null);
        }