public void DbFunctionsTests_DiffYears_DateTimeOffset_Test()
 {
     this.AssertException <NotSupportedException>(() => {
         this.GetOrderQuery().Select(x => DbFunctions.DiffYears(this.TestDateTimeOffset, this.TestDateTimeOffset)).First();
     });
 }
Esempio n. 2
0
        protected MonthRanking GetMonthRankingInner(int year, int month)
        {
            var thisMonth = new DateTime(year, month, 1);
            var monthEndDate = thisMonth.AddMonths(1).AddDays(-1);
            var model = new MonthRanking();
            var currentMonthData = _db.HistoryRankings.Where(h => DbFunctions.DiffMonths(h.RankDate, thisMonth) == 0 && DbFunctions.DiffYears(h.RankDate, thisMonth) == 0)
                .Select(h => new { HistoryRanking = h, PostCount = _db.Posts.Count(p => p.ItemId == h.BlogID && p.IdType == ItemType.Blog), Deleted = !_db.Blogs.Any(b => b.BlogID == h.BlogID) })
                .ToList();
            var name2nick = _blogUtil.GetNickNames(currentMonthData.Select(r => r.HistoryRanking.Author));
            var currentMonthRankingData = currentMonthData.Select(h => new RankingDisplay
            {
                Author = name2nick[h.HistoryRanking.Author],
                BlogDate = h.HistoryRanking.BlogDate,
                BlogID = h.HistoryRanking.BlogID,
                BlogThumb = h.HistoryRanking.BlogThumb,
                BlogTitle = h.HistoryRanking.BlogTitle,
                BlogVisit = h.HistoryRanking.BlogVisit,
                BlogUrl = Url.Action("Details", "Blog", new { id = h.HistoryRanking.BlogID }),
                RankDate = h.HistoryRanking.RankDate,
                Rating = h.HistoryRanking.Rating,
                PostCount = h.PostCount,
                RankType = h.HistoryRanking.RankType,
                Deleted = h.Deleted,
            });

            var dailyRanking = currentMonthRankingData.Where(d => d.RankType == HistoryRanking.Type.RankDaily).ToList();
            if (year == DateTime.Today.Year && month == DateTime.Today.Month)
            {
                var dayFromMonday = DateTime.Now.DayOfWeek - DayOfWeek.Monday;
                if (dayFromMonday < 0)
                    dayFromMonday += 7;
                monthEndDate = DateTime.Today.AddDays(-dayFromMonday);
                // If don't have today's ranking, read from 24h
                if (!dailyRanking.Any(h => h.RankDate.Date == DateTime.Today))
                {
                    dailyRanking.AddRange(currentMonthRankingData.Where(d => d.RankType == HistoryRanking.Type.Rank24h));
                }
            }
            model.MonthlyRankings = currentMonthRankingData.Where(d => d.RankType == HistoryRanking.Type.RankMonthly).ToList();
            model.DailyRankings = dailyRanking;
            model.WeeklyRankings = currentMonthRankingData.Where(d => d.RankType == HistoryRanking.Type.RankWeekly && d.RankDate < monthEndDate).ToList();
            return model;
        }
        public void CreateDocument()
        {
            // выборка данных с группировкой
            var query = from dogs in db.DOG
                        join dog_awards in db.DOG_AWARD on dogs.DOG_ID
                        equals dog_awards.DOG_ID
                        join award in db.AWARD on dog_awards.AWARD_ID
                        equals award.AWARD_ID
                        join breeds in db.BREED on dogs.ID_BREED
                        equals breeds.BREED_ID
                        group new { dogs, dog_awards, award, breeds }
            by new
            {
                breeds.BREED_NAME,
                dogs.DOG_NAME,
                dogs.SEX,
                dogs.BIRTH_DATE,
                award.AWARD_NAME,
                dog_awards.DATE_AWARD
            } into g
            orderby g.Key.BREED_NAME, g.Key.DOG_NAME
                select new
            {
                All = g.Key,
                Age = DbFunctions.DiffYears((DateTime)g.Key.BIRTH_DATE, DateTime.Now)
            };


            //Create document
            WordDocument document = new WordDocument();

            List <string> list      = new List <string>();
            List <string> breedsDog = new List <string>();
            //document.EnsureMinimal();
            IWSection section = document.AddSection() as WSection;

            //Set Margin of the section
            section.PageSetup.Margins.All = 72;
            //Set page size of the section
            //section.PageSetup.PageSize = new System.Drawing.SizeF(612, 792);
            //Create Paragraph
            IWParagraph paragraph = section.AddParagraph();

            foreach (var el in query.ToList())
            {
                //если такая порода не выводилась, то выводим
                if (!breedsDog.Contains(el.All.BREED_NAME))
                {
                    //Appends table.
                    IWTable table = section.AddTable();
                    //значение строк и столбцов
                    table.ResetCells(1, 2);
                    //нет границ
                    table.TableFormat.Borders.BorderType = BorderStyle.None;
                    table.TableFormat.IsAutoResized      = true;
                    //добавляем в 1 ячейку
                    paragraph = table[0, 0].AddParagraph();
                    //интервал после 6пт
                    paragraph.ParagraphFormat.AfterSpacing = 6f;
                    // добавляем запись с породой
                    IWTextRange textRangeBreed = paragraph.AppendText(el.All.BREED_NAME);
                    //стили ячейки
                    textRangeBreed.CharacterFormat.Bold     = true;
                    textRangeBreed.CharacterFormat.FontName = "Times New Roman";
                    textRangeBreed.CharacterFormat.FontSize = 14;
                    //добавляем во вторую ячейку
                    paragraph = table[0, 1].AddParagraph();
                    //интервал после 6пт
                    paragraph.ParagraphFormat.AfterSpacing = 6f;
                    IWTextRange textRangeDate = paragraph.AppendText(DateTime.Now.ToShortDateString());
                    textRangeDate.CharacterFormat.Bold     = true;
                    textRangeDate.CharacterFormat.FontName = "Times New Roman";
                    textRangeDate.CharacterFormat.FontSize = 14;

                    breedsDog.Add(el.All.BREED_NAME); // добаляем породу в список
                }
                if (!list.Contains(el.All.DOG_NAME))
                {
                    paragraph = section.AddParagraph();
                    paragraph.ParagraphFormat.AfterSpacing = 6f;

                    IWTextRange textRange = paragraph.AppendText("Кличка: " + el.All.DOG_NAME + "; "
                                                                 + "\tпол: " + el.All.SEX + " " + "\tвозраст: " + el.Age + "; "
                                                                 + "\t[награда: " + el.All.AWARD_NAME + "; " + "\tдата: "
                                                                 + Convert.ToDateTime(el.All.DATE_AWARD).ToShortDateString() + "]" + "\n");

                    list.Add(el.All.DOG_NAME);
                }
                else
                {
                    //добовляем текст к последнему созданому параграфу
                    document.LastParagraph.AppendText("\t\t\t\t\t\t\t[награда: " + el.All.AWARD_NAME + "; " + "\tдата: "
                                                      + Convert.ToDateTime(el.All.DATE_AWARD).ToShortDateString() + "]" + "\n");
                }
            }
            document.Save("Result.docx", FormatType.Docx, HttpContext.ApplicationInstance.Response,
                          HttpContentDisposition.Attachment);
        }