В БД имеется две таблицы в которых хранятся данные по компаниям и их филиалам. Каждый филиал относится к одной из компаний. Все компании имеют обязательный бинарный признак, который разделяет их на две группы.
server:
Test.TavridaTask - слой тестов
Infrastructure.TavridaTask - слой подключение к инфрастуктуре + мигратор
Core.TavridaTask - слой бизнес логики
Api.TavridaTask - слой апи
client:
Стандартный npx-react-create-app
Css - aphrodite
Companies - таблица компаний:
Id - идентификатор
Name - наименование
BinarySign - бинарный признак
CompaniesBranches - таблица филиалов компаний:
Id - идентификатор
Name - наименование
CompanyId - компания
1 Подготовить web-приложение (MVC, React) с использованием .Net Core (C#), которое будет работать с БД через ORM Entity Framework (сode first).
2 Реализовать в нем страницу с данными по всем филиалам в виде таблицы:
«Филиал», «Компания Филиала», «Группа Компании», «Связанные филиалы»
где, для каждого филиала в колонке «Связанные филиалы» через запятую отображались бы
филиалы его компании, если компания входит в первую группу, либо филиалы всех компаний, если
компания филиала принадлежит второй группе.
Выборка для страницы должна быть выполнена в виде LINQ запроса
3 Помимо Linq запроса необходимо подготовить T-SQL запрос, для аналогичной информации одним запросом к БД (можно без группировки по ее филиалу).
Запрос должен содержать только такие инструкции, которые позволят использовать его в представлениях и процедурах MS SQL Server 2012 или младше.
Код должен быть лаконичный, простой для понимания (не требующий комментариев и пояснений) и оптимальный с точки зрения производительности.
Исходные должны быть доступны на GitHub, а решения открываться в IDE Visual Studio или VS Code.
[идеально если будет] Ссылка на рабочую версию приложения. .
select cb.Name as Name,
c.Name as CompanyName,
c.BinarySign,
STUFF((select ', ' + STR(_cb.Id)
from CompanyBranches as _cb
where c.BinarySign = 0 and _cb.CompanyId = c.Id
or c.BinarySign = 1
FOR XML PATH('')), 1, 1, '') as BranchNames
from Companies as c
join CompanyBranches cb on c.Id = cb.CompanyId