private void SaveMailRecord(string fromDate, string toDate)
        {
            var from = DateTime.Parse(fromDate);
            var to   = DateTime.Parse(toDate);

            MailRecord newEntry = new MailRecord();

            newEntry.FromDate = from;
            newEntry.ToDate   = to;

            this.modelContext.MailRecords.Add(newEntry);
            this.modelContext.SaveChanges();
        }
Exemple #2
0
        private static async Task <MailRecord> BuildMailRecordAsync(MailMessage mail)
        {
            var mailRecord = new MailRecord {
                Subject = mail.Subject,
                Body    = mail.Body,
                IsHtml  = mail.IsHtml,
                To      = string.Join(";", mail.To.Select(x => x.ToString())),
                Cc      = string.Join(";", mail.Cc.Select(x => x.ToString())),
            };

            foreach (var item in mail.Attachments)
            {
                mailRecord.Attachments.Add(new MailRecordAttachment {
                    Name          = item.Name,
                    ContentStream = await ReadStreamAsync(item.ContentStream),
                    ContentType   = item.ContentType
                });
            }
            return(mailRecord);
        }
Exemple #3
0
        private void SendMesseges(IList <FeedRecord> package, int threadId)
        {
            var smtp        = new SmtpClient();
            var sendedCount = 0;
            var emptyMails  = 0;

            _log.Write(string.Format("----- Поток {0} начинает рассылку ({1} сообщений) -----", threadId, package.Count));

            foreach (var messageContent in package)
            {
                var messageTemplate = RazorBasedTemplateRenderEngine.NewMailMessageTemplate(messageContent, _assembly);
                messageTemplate.Execute();
                var message = new MailMessage();
                message.To.Add(messageTemplate.UserEmail);
                message.Headers.Add("Precedence", "bulk");

                try
                {
                    if (messageContent.PackFailed)
                    {
                        throw new Exception("Сборка рассылки для пользователя провалилась");
                    }

                    if (messageContent.IsThereUpdates)
                    {
                        message.Subject    = "Демократия2. Обновления за " + messageTemplate.Date.ToString("dd MMMM yyyy");
                        message.IsBodyHtml = true;
                        message.Body       = messageTemplate.Body;

                        message.To.Add(messageTemplate.UserEmail);
                        message.Headers.Add("Precedence", "bulk");

                        var sendingMessage = "Поток " + threadId + " Отправляем: " + messageTemplate.UserFullName +
                                             " подписка: " + messageContent.Content.Count +
                                             ", сообщений: " + (messageContent.CommentNotices.Count +
                                                                messageContent.GroupMemberNotices.Count +
                                                                messageContent.GroupModeratorNotices.Count +
                                                                messageContent.PetitionNotices.Count +
                                                                messageContent.PollNotices.Count +
                                                                messageContent.PrivateMessages.Count +
                                                                messageContent.SystemMessages.Count);
                        _log.Write(sendingMessage);

                        if (MainClass.TESTING)
                        {
                            if (!Directory.Exists("messages"))
                            {
                                Directory.CreateDirectory("messages");
                            }
                            File.WriteAllText("messages\\" + messageTemplate.UserId + ".html", message.Body);
                            sendedCount++;
                            Thread.Sleep(5000);
                        }
                        else
                        {
                            smtp.Send(message);
                            sendedCount++;
                            Thread.Sleep(5000);
                        }
                    }
                    else
                    {
                        var sendingMessage = "Поток " + threadId + " Нечего отправлять: " + messageTemplate.UserFullName;
                        _log.Write(sendingMessage);

                        emptyMails++;
                    }


                    var mailRecord = DataService.PerThread.MailRecordSet.SingleOrDefault(mr => mr.User.Id == messageTemplate.UserId);
                    if (mailRecord != null)
                    {
                        mailRecord.Date        = DateTime.Now;
                        mailRecord.IsDelivered = true;
                    }
                    else
                    {
                        var user = DataService.PerThread.BaseUserSet.OfType <User>().SingleOrDefault(u => u.Id == messageTemplate.UserId);
                        if (user != null)
                        {
                            mailRecord = new MailRecord
                            {
                                Date        = DateTime.Now,
                                User        = user,
                                IsDelivered = true
                            };
                            DataService.PerThread.MailRecordSet.AddObject(mailRecord);
                        }
                    }
                }
                catch (Exception exception)
                {
                    _log.Write(exception);
                    var mailRecord = DataService.PerThread.MailRecordSet.SingleOrDefault(mr => mr.User.Id == messageTemplate.UserId);
                    if (mailRecord != null)
                    {
                        mailRecord.Date        = DateTime.Now;
                        mailRecord.IsDelivered = false;
                    }
                    else
                    {
                        var user = DataService.PerThread.BaseUserSet.OfType <User>().SingleOrDefault(u => u.Id == messageTemplate.UserId);
                        if (user != null)
                        {
                            mailRecord = new MailRecord
                            {
                                Date        = DateTime.Now,
                                User        = user,
                                IsDelivered = false
                            };
                            DataService.PerThread.MailRecordSet.AddObject(mailRecord);
                        }
                    }
                }
                finally
                {
                    message.Dispose();
                    DataService.PerThread.SaveChanges();
                }
            }

            smtp.Dispose();
            _log.Write(string.Format("----- Поток {0} закончил рассылку ({3} сообщений: {1} отправлено, {2} пустых) -----", threadId, sendedCount, emptyMails, package.Count));
        }
Exemple #4
0
    public void RefreshResultData(IEvent ievent)
    {
        DataModel.AwardItems.Clear();
        DataModel.RankRewards.Clear();
        var info = ievent as MieshiResultEvent;

        DataModel.KillCount    = info.msg.KillCount;
        DataModel.Score        = info.msg.Score;
        DataModel.Contribution = info.msg.Contribution;
        DataModel.FightResult  = info.msg.IsWin;
        DataModel.TowerCount   = info.msg.TowerCount;
        Table.ForeachDefendCityReward(record =>
        {
            if (record.Rank[0] <= info.msg.Rank && record.Rank[1] >= info.msg.Rank)
            {
                if (info.msg.TowerCount > 0 && info.msg.TowerCount - 1 < record.Rate.Count && info.msg.IsWin == 1)
                {
                    DataModel.Rate = record.Rate[info.msg.TowerCount - 1];
                }
                else
                {
                    DataModel.Rate = -100;
                }
                if (info.msg.IsWin == 0)
                {
                    return(true);
                }
                MailRecord tbMail = null;
                switch (info.msg.TowerCount)
                {
                case 6:
                    tbMail = Table.GetMail(record.MailId6);
                    break;

                case 5:
                    tbMail = Table.GetMail(record.MailId5);
                    break;

                case 4:
                    tbMail = Table.GetMail(record.MailId4);
                    break;

                case 3:
                    tbMail = Table.GetMail(record.MailId3);
                    break;

                case 2:
                    tbMail = Table.GetMail(record.MailId2);
                    break;

                default:
                    tbMail = Table.GetMail(record.MailId);
                    break;
                }
                if (tbMail != null)
                {
                    var strDic = GameUtils.GetDictionaryText(300000125);
                    string _s  = string.Format(strDic, DataModel.Rate);
                    for (int i = 0; i < tbMail.ItemId.Length && i < tbMail.ItemCount.Length; i++)
                    {
                        BagItemDataModel item = new BagItemDataModel();
                        if (tbMail.ItemId[i] >= 0 && tbMail.ItemCount[i] > 0)
                        {
                            item.ItemId = tbMail.ItemId[i];
                            item.Count  = tbMail.ItemCount[i];

                            item.strParam = _s;
                            DataModel.RankRewards.Add(item);
                        }
                    }
                    {//灭世积分奖励
                        BagItemDataModel item = new BagItemDataModel();
                        item.ItemId           = (int)eResourcesType.MieshiScore;
                        item.Count            = info.msg.Score;
                        item.strParam         = _s;
                        DataModel.RankRewards.Add(item);
                    }
                }
                return(false);
            }
            return(true);
        });


        for (int i = 0; i < info.msg.ItemId.Count && i < info.msg.ItemNum.Count; i++)
        {
            BagItemDataModel item = new BagItemDataModel();
            item.ItemId = info.msg.ItemId[i];
            item.Count  = info.msg.ItemNum[i];
            DataModel.AwardItems.Add(item);
        }
        var str = GameUtils.GetDictionaryText(300000127);

        DataModel.strExplain = string.Format(str, info.msg.TowerCount, DataModel.Rate);
    }