示例#1
0
        public void Add(AcknowledgementDTO acknowledgementDto, IEnumerable <string> tags)
        {
            var acknowledgement = acknowledgementsAssembler.Disassemble(acknowledgementDto);

            acknowledgement.Tags = new List <Tag>();

            using (var context = new AcknowledgementsTrackerContext())
            {
                foreach (var tag in tags)
                {
                    // Verify if tag already exists
                    if (tagsRepo.Get(tag) != null)
                    {
                        // Add existing tag from database
                        context.Database.Log = message => Debug.WriteLine(message);
                        acknowledgement.Tags.Add(context.Tags
                                                 .Where(t => t.Title == tag)
                                                 .FirstOrDefault());
                    }
                    else
                    {
                        // Create new tag and add it to tags
                        Tag newTag = new Tag();
                        newTag.Title = tag;

                        acknowledgement.Tags.Add(newTag);
                    }
                }

                context.Database.Log = message => Debug.WriteLine(message);
                context.Acknowledgements.Add(acknowledgement);
                context.SaveChanges();
            }
        }
示例#2
0
 public void Remove(int id)
 {
     using (var context = new AcknowledgementsTrackerContext())
     {
         context.Database.Log = message => Debug.WriteLine(message);
         context.Entry(context.Acknowledgements.Find(id)).State = EntityState.Deleted;
         context.SaveChanges();
     }
 }
示例#3
0
        private List <Acknowledgement> GetByTagsOrContent(string search, AcknowledgementsTrackerContext context)
        {
            var acknowledgements = context.Acknowledgements.Where(a => a.NormalizedText.Contains(search) ||
                                                                  a.Tags.Select(t => t.Title).Contains(search))
                                   .OrderByDescending(a => a.DateCreated)
                                   .ToList();

            return(acknowledgements);
        }
示例#4
0
        public AcknowledgementDTO Get(int id)
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                var acknowledgement = context.Acknowledgements.Find(id);

                return(acknowledgementsAssembler.Assemble(acknowledgement));
            }
        }
示例#5
0
        public IEnumerable <AcknowledgementDTO> GetAll()
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                var acknowledgements = context.Acknowledgements.ToList();

                return(acknowledgementsAssembler.AssembleCollection(acknowledgements)
                       .ToList());
            }
        }
示例#6
0
        public void Add(TagDTO tagDto)
        {
            var tag = assembler.Disassemble(tagDto);

            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = Console.WriteLine;
                context.Tags.Add(tag);
                context.SaveChanges();
            }
        }
示例#7
0
        public void Add(AcknowledgementDTO acknowledgementDto)
        {
            var acknowledgement = acknowledgementsAssembler.Disassemble(acknowledgementDto);

            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                context.Acknowledgements.Add(acknowledgement);
                context.SaveChanges();
            }
        }
示例#8
0
        public void Edit(AcknowledgementDTO acknowledgementDto)
        {
            var acknowledgement = acknowledgementsAssembler.Disassemble(acknowledgementDto);

            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                context.Entry(acknowledgement).State = EntityState.Modified;
                context.SaveChanges();
            }
        }
示例#9
0
        public TagDTO Get(int id)
        {
            Tag tag;

            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                tag = context.Tags.Find(id);
            }

            return(assembler.Assemble(tag));
        }
示例#10
0
        public IEnumerable <TagDTO> GetAll()
        {
            IEnumerable <Tag> tags;

            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                tags = context.Tags.ToList();
            }

            return(assembler.AssembleCollection(tags));
        }
示例#11
0
        public IEnumerable <TagDTO> GetAcknowledgementTags(int acknowledgementId)
        {
            IEnumerable <Tag> tags;

            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                var acknowledgement = context.Acknowledgements.Find(acknowledgementId);
                tags = acknowledgement.Tags;
            }

            return(assembler.AssembleCollection(tags));
        }
示例#12
0
        public Dictionary <string, int> GetMostFrequentTagsAllTime()
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                var result = context.Tags
                             .OrderByDescending(t => t.Acknowledgements.Count())
                             .Take(10)
                             .ToDictionary(t => t.Title, t => t.Acknowledgements.Count());

                return(result);
            }
        }
示例#13
0
        public IEnumerable <AcknowledgementDTO> GetByContent(string keyword)
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);

                var acknowledgements = context.Acknowledgements
                                       .Where(a => a.NormalizedText.Contains(keyword))
                                       .ToList();

                return(acknowledgementsAssembler.AssembleCollection(acknowledgements)
                       .ToList());
            }
        }
示例#14
0
        public IEnumerable <AcknowledgementDTO> GetByUsername(string username)
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                var acknowledgements = context.Acknowledgements
                                       .Where(a => a.BeneficiaryUsername == username ||
                                              a.AuthorUsername == username)
                                       .ToList();

                return(acknowledgementsAssembler.AssembleCollection(acknowledgements)
                       .ToList());
            }
        }
示例#15
0
        public TagDTO Get(string title)
        {
            Tag tag;

            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                tag = context.Tags
                      .Where(t => t.Title == title)
                      .FirstOrDefault();
            }

            return(assembler.Assemble(tag));
        }
示例#16
0
        public IEnumerable <AcknowledgementDTO> GetLastAcknowledgements()
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                var acknowledgements = context.Acknowledgements
                                       .Include(a => a.Tags)
                                       .OrderByDescending(a => a.DateCreated)
                                       .Take(10)
                                       .ToList();

                return(acknowledgementsAssembler.AssembleCollection(acknowledgements)
                       .ToList());
            }
        }
示例#17
0
        public IEnumerable <AcknowledgementDTO> GetGiven(string username)
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                var acknowledgements = context.Acknowledgements
                                       .Include(a => a.Tags)
                                       .Where(a => a.AuthorUsername == username)
                                       .OrderByDescending(a => a.DateCreated)
                                       .ToList();

                return(acknowledgementsAssembler.AssembleCollection(acknowledgements)
                       .ToList());
            }
        }
示例#18
0
        public IEnumerable <AcknowledgementDTO> GetThisMonthsByUser(string username)
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                var acknowledgements = context.Acknowledgements
                                       .Where(a => a.BeneficiaryUsername == username &&
                                              a.DateCreated.Month == DateTime.Today.Month &&
                                              a.DateCreated.Year == DateTime.Today.Year)
                                       .OrderByDescending(a => a.DateCreated)
                                       .ToList();

                return(acknowledgementsAssembler.AssembleCollection(acknowledgements)
                       .ToList());
            }
        }
示例#19
0
        public Dictionary <string, int> GetAllTimeTopTen()
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                var topTenAllTime = context.Acknowledgements
                                    .GroupBy(
                    a => a.BeneficiaryUsername,
                    (key, values) => new { Username = key, Count = values.Count() })
                                    .OrderByDescending(b => b.Count)
                                    .Take(10)
                                    .ToDictionary(b => b.Username, b => b.Count);

                return(topTenAllTime);
            }
        }
示例#20
0
        public string GetAllTimeChampion()
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                var champion = context.Acknowledgements
                               .GroupBy(
                    a => a.BeneficiaryUsername,
                    (key, values) => new { Username = key, Count = values.Count() })
                               .OrderByDescending(b => b.Count)
                               .Select(b => b.Username)
                               .First();

                return(champion);
            }
        }
示例#21
0
        public IEnumerable <AcknowledgementDTO> GetThisMonthAcknowledgements()
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                var acknowledgements = context.Acknowledgements
                                       .Include(a => a.Tags)
                                       .Where(a => a.DateCreated.Year == DateTime.Today.Year &&
                                              a.DateCreated.Month == DateTime.Today.Month)
                                       .OrderByDescending(a => a.DateCreated)
                                       .ToList();

                return(acknowledgementsAssembler.AssembleCollection(acknowledgements)
                       .ToList());
            }
        }
示例#22
0
        public Dictionary <string, int> GetThisMonthTopTen()
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                var topTenThisMonth = context.Acknowledgements
                                      .Where(a => a.DateCreated.Month == DateTime.Today.Month &&
                                             a.DateCreated.Year == DateTime.Today.Year)
                                      .GroupBy(
                    a => a.BeneficiaryUsername,
                    (key, values) => new { Username = key, Count = values.Count() })
                                      .OrderByDescending(b => b.Count)
                                      .Take(10)
                                      .ToDictionary(b => b.Username, b => b.Count);

                return(topTenThisMonth);
            }
        }
示例#23
0
        public IEnumerable <AcknowledgementDTO> GetThisWeekAcknowledgements()
        {
            DateTime startOfWeek = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + 1),
                     endOfWeek   = startOfWeek.AddDays(7);

            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                var acknowledgements = context.Acknowledgements
                                       .Include(a => a.Tags)
                                       .Where(a => a.DateCreated >= startOfWeek && a.DateCreated < endOfWeek)
                                       .OrderByDescending(a => a.DateCreated)
                                       .ToList();

                return(acknowledgementsAssembler.AssembleCollection(acknowledgements)
                       .ToList());
            }
        }
示例#24
0
        public Dictionary <string, int> GetTopTenUsersByTag(string tagTitle)
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                Tag tag = context.Tags.Where(t => t.Title == tagTitle).FirstOrDefault();

                var topTenByTag = context.Acknowledgements
                                  .Where(a => a.Tags.Contains(tag))
                                  .GroupBy(
                    a => a.BeneficiaryUsername,
                    (key, values) => new { Username = key, Count = values.Count() })
                                  .OrderByDescending(b => b.Count)
                                  .Take(10)
                                  .ToDictionary(b => b.Username, b => b.Count);

                return(topTenByTag);
            }
        }
示例#25
0
        public IEnumerable <AcknowledgementDTO> GetByTagThisMonth(string tagTitle)
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                var tag = context.Tags
                          .Where(t => t.Title == tagTitle)
                          .FirstOrDefault();

                var acknowledgements = tag.Acknowledgements
                                       .Where(a => a.DateCreated.Month == DateTime.Today.Month &&
                                              a.DateCreated.Year == DateTime.Today.Year)
                                       .OrderByDescending(a => a.DateCreated)
                                       .ToList();

                return(acknowledgementsAssembler.AssembleCollection(acknowledgements)
                       .ToList());
            }
        }
示例#26
0
        public IEnumerable <AcknowledgementDTO> GetByTag(string tagTitle)
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                context.Database.Log = message => Debug.WriteLine(message);
                var tag = context.Tags
                          .Where(t => t.Title == tagTitle)
                          .FirstOrDefault();

                if (tag != null)
                {
                    return(acknowledgementsAssembler.AssembleCollection(tag.Acknowledgements)
                           .ToList());
                }
                else
                {
                    return(new List <AcknowledgementDTO>());
                }
            }
        }
示例#27
0
        // TODO: OPTIMIZE!!!
        public Dictionary <string, int> GetMostFrequentTagsThisMonth()
        {
            using (var context = new AcknowledgementsTrackerContext())
            {
                var currentMonth = DateTime.Today.Month;
                var currentYear  = DateTime.Today.Year;

                context.Database.Log = message => Debug.WriteLine(message);
                var result = context.Tags
                             .OrderByDescending(t => t.Acknowledgements
                                                .Where(a => a.DateCreated.Month == currentMonth && a.DateCreated.Year == currentYear)
                                                .Count())
                             .Where(t => t.Acknowledgements.Where(a => a.DateCreated.Month == currentMonth && a.DateCreated.Year == currentYear).Count() > 0)
                             .Take(10)
                             .ToDictionary(t => t.Title, t => t.Acknowledgements
                                           .Where(a => a.DateCreated.Month == currentMonth && a.DateCreated.Year == currentYear)
                                           .Count());

                return(result);
            }
        }
示例#28
0
        private List <Acknowledgement> GetByUsername(IEnumerable <string> usernames, string search, AcknowledgementsTrackerContext context)
        {
            List <Acknowledgement> acknowledgements = new List <Acknowledgement>();

            foreach (var username in usernames)
            {
                acknowledgements.AddRange(context.Acknowledgements
                                          .Where(a => a.AuthorUsername == username ||
                                                 a.BeneficiaryUsername == username ||
                                                 a.Tags.Select(t => t.Title).Contains(search))
                                          .OrderByDescending(a => a.DateCreated)
                                          .ToList());
            }

            return(acknowledgements);
        }