示例#1
0
        public static SLDocument PrintHalfReport(ScientificPublishingModel model)
        {
            var        folder = AppDomain.CurrentDomain.GetData("DataDirectory").ToString();
            var        path   = Path.Combine(folder, "Dodatki.xlsx");
            SLDocument sl     = new SLDocument(path, "Report");

            #region Науково-видавнича
            //Видання монографій (кількість):
            sl.SetCellValue("D16", model.Monographs.Item1);
            sl.SetCellValue("E16", model.Monographs.Item2);
            sl.SetCellValue("F16", model.Monographs.Item3);
            //у вітчизняний виданнях
            sl.SetCellValue("D17", model.MonographsNationalPublications.Item1);
            sl.SetCellValue("E17", model.MonographsNationalPublications.Item2);
            sl.SetCellValue("F17", model.MonographsNationalPublications.Item3);
            //у зарубіжних виданнях
            sl.SetCellValue("D18", model.MonographsForeignJournals.Item1);
            sl.SetCellValue("E18", model.MonographsForeignJournals.Item2);
            sl.SetCellValue("F18", model.MonographsForeignJournals.Item3);
            //ВСЬОГО ПУБЛІКАЦІЙ: в тому числі:
            sl.SetCellValue("D19", model.AllPublications.Item1);
            sl.SetCellValue("E19", model.AllPublications.Item2);
            sl.SetCellValue("F19", model.AllPublications.Item3);
            //наукові публікаціі в Scopus (кількість):
            sl.SetCellValue("D20", model.ScientificPublicationsInScopus.Item1);
            sl.SetCellValue("E20", model.ScientificPublicationsInScopus.Item2);
            sl.SetCellValue("F20", model.ScientificPublicationsInScopus.Item3);
            //публікацій (статі, тези), у виданнях, що входять до міжнародних науково- метричних баз даних (кількість):
            sl.SetCellValue("D21", model.ArticlesThesesInNmbd.Item1);
            sl.SetCellValue("E21", model.ArticlesThesesInNmbd.Item2);
            sl.SetCellValue("F21", model.ArticlesThesesInNmbd.Item3);
            //наукові публікації у зарубіжних виданнях (кількість).
            sl.SetCellValue("D22", model.ScientificPublicationsInForeignJournals.Item1);
            sl.SetCellValue("E22", model.ScientificPublicationsInForeignJournals.Item2);
            sl.SetCellValue("F22", model.ScientificPublicationsInForeignJournals.Item3);
            //статті у фахових видання (кількість):
            sl.SetCellValue("D23", model.ArticlesInProfessionalPublications.Item1);
            sl.SetCellValue("E23", model.ArticlesInProfessionalPublications.Item2);
            sl.SetCellValue("F23", model.ArticlesInProfessionalPublications.Item3);
            //публікація наукових статей іноземною мовою (кількість):
            sl.SetCellValue("D24", model.ScientificArticlesInForeignLanguages.Item1);
            sl.SetCellValue("E24", model.ScientificArticlesInForeignLanguages.Item2);
            sl.SetCellValue("F24", model.ScientificArticlesInForeignLanguages.Item3);
            //тези доповідей (кількість).
            sl.SetCellValue("D25", model.Abstracts.Item1);
            sl.SetCellValue("E25", model.Abstracts.Item2);
            sl.SetCellValue("F25", model.Abstracts.Item3);
            #endregion
            var title = sl.GetCellValueAsString("C5");
            sl.SetCellValue("C5", title + " " + model.DepartmentName + " " + model.Period);
            var period = String.Empty;
            if (model.Period.Contains("ІІ"))
            {
                period = "II період(01.09 - 15.01)";
            }
            else
            {
                period = "I період (01.01-30.06)";
            }
            sl.SetCellValue("C5", title + " " + model.DepartmentName + " " + model.Period);
            sl.SetCellValue("D7", period);

            return(sl);
        }
示例#2
0
        public static ScientificPublishingModel ScientificPublishing(string depId, int year, int half)
        {
            using (ApplicationDbContext db = new ApplicationDbContext())
            {
                var departmentName = db.Departments.Where(x => x.Id == depId).Select(x => x.Name).FirstOrDefault();
                //all users in selected department
                var users = db.DepartmentUsers
                            .Where(x => x.DepartmentId == depId)
                            .Join(db.Users, du => du.UserId, u => u.Id, (du, u) => new { du, u })
                            .Select(u => u.u.Id)
                            .ToList();

                var plans = db.ScientificPublishings
                            .Where(x => users.Any(u => u == x.UserId))
                            .Where(x => x.Year == year)
                            .ToList();

                var plan = plans.Aggregate((prev, cur) => new ScientificPublishing
                {
                    Abstracts       = prev.Abstracts + cur.Abstracts,
                    AllPublications = prev.AllPublications + cur.AllPublications,
                    ArticlesInProfessionalPublications = prev.ArticlesInProfessionalPublications + cur.ArticlesInProfessionalPublications,
                    ArticlesThesesInNmbd                    = prev.ArticlesThesesInNmbd + prev.ArticlesThesesInNmbd,
                    Monographs                              = prev.Monographs + cur.Monographs,
                    MonographsForeignJournals               = prev.MonographsForeignJournals + cur.MonographsForeignJournals,
                    MonographsNationalPublications          = prev.MonographsNationalPublications + cur.MonographsNationalPublications,
                    ScientificArticlesInForeignLanguages    = prev.ScientificArticlesInForeignLanguages + cur.ScientificArticlesInForeignLanguages,
                    ScientificPublicationsInForeignJournals = prev.ScientificPublicationsInForeignJournals + cur.ScientificPublicationsInForeignJournals,
                    ScientificPublicationsInScopus          = prev.ScientificPublicationsInScopus + cur.ScientificPublicationsInScopus,
                    Year = prev.Year
                });
                var dates  = new Dates(year);
                var period = String.Empty;
                if (half == 1)
                {
                    period = "за І півріччя " + year + " року";
                }
                else
                {
                    period = "за ІІ півріччя " + year + " року";
                }
                //all publications of users in department
                var publications = db.Publications
                                   .Include("PublicationType")
                                   .AsEnumerable()
                                   .Join(db.PublicationUsers, p => p.Id, pu => pu.PublicationId, (p, pu) => new { p, pu })
                                   .Where(x => users.Any(u => u == x.pu.UserId))
                                   .OrderBy(x => x.p.PublishedAt)
                                   .Where(x =>
                {
                    if (half == 1)
                    {
                        return(x.p.PublishedAt > dates.StartStudy && x.p.PublishedAt < dates.EndFirstHalf);
                    }
                    if (half == 2)
                    {
                        return(x.p.PublishedAt > dates.EndFirstHalf && x.p.PublishedAt < dates.EndSecondHalf);
                    }
                    return(false);
                })
                                   .DistinctBy(x => x.p.Id)
                                   .Join(db.PublicationNMBDs, p => p.p.Id, pn => pn.PublicationId, (p, pn) => new { p, pn })
                                   .ToList();

                var fact = new ScientificPublishing()
                {
                    AllPublications = publications.Count,

                    Abstracts = publications
                                .Where(x => x.p.p.PublicationType.Value == PublicationTypeEnum.Abstracts).Count(),

                    ArticlesInProfessionalPublications = publications
                                                         .Where(x => x.p.p.PublicationType.Value == PublicationTypeEnum.Article).Count(),

                    ArticlesThesesInNmbd = publications
                                           .Where(x => x.p.p.PublicationNMBDs.Count() > 0 &&
                                                  x.p.p.PublicationType.Value == PublicationTypeEnum.Article).Count(),

                    MonographsForeignJournals = publications
                                                .Where(x => x.p.p.IsOverseas &&
                                                       (x.p.p.PublicationType.Value == PublicationTypeEnum.Monograph ||
                                                        x.p.p.PublicationType.Value == PublicationTypeEnum.CollectiveMonograph
                                                       )).Count(),

                    Monographs = publications
                                 .Where(x => x.p.p.PublicationType.Value == PublicationTypeEnum.Monograph ||
                                        x.p.p.PublicationType.Value == PublicationTypeEnum.CollectiveMonograph).Count(),

                    MonographsNationalPublications = publications
                                                     .Where(x => !x.p.p.IsOverseas &&
                                                            (x.p.p.PublicationType.Value == PublicationTypeEnum.Monograph ||
                                                             x.p.p.PublicationType.Value == PublicationTypeEnum.CollectiveMonograph
                                                            )).Count(),

                    ScientificArticlesInForeignLanguages = publications
                                                           .Where(x => x.p.p.IsOverseas &&
                                                                  x.p.p.PublicationType.Value == PublicationTypeEnum.Article).Count(),

                    ScientificPublicationsInForeignJournals = publications
                                                              .Where(x => x.p.p.IsOverseas).Count(),

                    ScientificPublicationsInScopus = publications
                                                     .Where(x => x.p.p.PublicationNMBDs.Count() > 0)
                                                     .Join(db.NMBDs, pnm => pnm.pn.NMBDId, nmbd => nmbd.Id, (pnm, nmbd) => new { pnm, nmbd })
                                                     .Where(x => x.nmbd.Name == "SCOPUS").Count()
                };

                var model = new ScientificPublishingModel()
                {
                    AllPublications = MakeTuple(plan.AllPublications, fact.AllPublications),

                    Abstracts = MakeTuple(plan.Abstracts, fact.Abstracts),

                    ArticlesInProfessionalPublications = MakeTuple(plan.ArticlesInProfessionalPublications, fact.ArticlesInProfessionalPublications),

                    ArticlesThesesInNmbd = MakeTuple(plan.ArticlesThesesInNmbd, fact.ArticlesThesesInNmbd),

                    MonographsForeignJournals = MakeTuple(plan.MonographsForeignJournals, fact.MonographsForeignJournals),

                    Monographs = MakeTuple(plan.Monographs, fact.Monographs),

                    MonographsNationalPublications = MakeTuple(plan.MonographsNationalPublications, fact.MonographsNationalPublications),

                    ScientificArticlesInForeignLanguages = MakeTuple(plan.ScientificArticlesInForeignLanguages, fact.ScientificArticlesInForeignLanguages),

                    ScientificPublicationsInForeignJournals = MakeTuple(plan.ScientificPublicationsInForeignJournals, fact.ScientificPublicationsInForeignJournals),

                    ScientificPublicationsInScopus = MakeTuple(plan.ScientificPublicationsInScopus, fact.ScientificPublicationsInScopus),
                    DepartmentName = departmentName,
                    Period         = period
                };


                return(model);
            }
        }