Projekt

Obecné

Profil

Stáhnout (2.02 KB) Statistiky
| Větev: | Tag: | Revize:
1
using AutoMapper;
2
using Core.Contexts;
3
using Models.Tags;
4
using Serilog;
5
using System;
6
using System.Collections.Generic;
7
using System.Linq;
8
using System.Text;
9
using System.Threading.Tasks;
10

    
11
namespace Core.Services.TagService
12
{
13
    public class TagServiceEF : ITagService
14
    {
15
        private readonly DatabaseContext databaseContext;
16
        private readonly ILogger logger;
17
        private readonly IMapper mapper;
18

    
19
        public TagServiceEF(DatabaseContext databaseContext, ILogger logger, IMapper mapper)
20
        {
21
            this.databaseContext = databaseContext;
22
            this.logger = logger;
23
            this.mapper = mapper;
24
        }
25

    
26
        public TagTreeResponse GetTagTree()
27
        {
28
            var tagCategories = databaseContext.TagCategories.Select(tc => tc).ToList();
29
            var tagCategoriesDTOs = new List<TagCategoryInfo>();
30
            foreach (var tagCategory in tagCategories)
31
            {
32
                var tagCategoryDTO = mapper.Map<TagCategoryInfo>(tagCategory);
33
                var tags = databaseContext.Tags.Where(t => t.Category == tagCategory).ToList();
34
                var tagDTOs = new List<TagInfo>();
35

    
36
                foreach (var tag in tags)
37
                {
38
                    var tagDTO = mapper.Map<TagInfo>(tag);
39
                    var subTags = databaseContext.SubTags.Where(st => st.Tag == tag).ToList();
40
                    var subTagDTOs = new List<SubTagInfo>();
41

    
42
                    if (subTags.Count() != 0)
43
                    {
44
                        foreach (var subTag in subTags)
45
                        {
46
                            subTagDTOs.Add(mapper.Map<SubTagInfo>(subTag));
47
                        }
48
                    }
49
                    tagDTO.SubTags = subTagDTOs;
50
                    tagDTOs.Add(tagDTO);
51
                }
52

    
53
                tagCategoryDTO.Tags = tagDTOs;
54
                tagCategoriesDTOs.Add(tagCategoryDTO);
55
            }
56

    
57
            return new TagTreeResponse()
58
            {
59
                TagCategories = tagCategoriesDTOs
60
            };
61
        }
62
    }
63
}
(2-2/2)