using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AutoMapper;
using GxPress.Common.Tools;
using GxPress.Repository.Interface;
using GxPress.Repository.Interface.Media;
using GxPress.Repository.Interface.Navigation;
using GxPress.Repository.Interface.SpecialLabel;
using GxPress.Repository.Interface.SystemLabel;
using GxPress.Result.Navigation;
using GxPress.Service.Interface.Navigation;
namespace GxPress.Service.Implement.Navigation
{
public class NavigationService : INavigationService
{
private readonly INavigationRepository _navigationrepository;
private readonly IMapper _mapper;
private readonly IMiddleLableRepository _middleLableRepository;
private readonly ISystemLabelRepository _systemLabelRepository;
private readonly IMediaRepository _mediaRepository;
private readonly IMediaLableRepository _mediaLableRepository;
private readonly ISlideRepository slideRepository;
private readonly ISpecialLabelRepository specialLabelRepository;
public NavigationService(INavigationRepository _repository, IMapper _mapper, IMiddleLableRepository _middleLableRepository, ISystemLabelRepository _systemLabelRepository, IMediaRepository _mediaRepository, IMediaLableRepository _mediaLableRepository, ISlideRepository slideRepository, ISpecialLabelRepository specialLabelRepository)
{
this._navigationrepository = _repository;
this._middleLableRepository = _middleLableRepository;
this._systemLabelRepository = _systemLabelRepository;
this._mediaRepository = _mediaRepository;
this._mediaLableRepository = _mediaLableRepository;
this.slideRepository = slideRepository;
this._mapper = _mapper;
this.specialLabelRepository = specialLabelRepository;
}
///
/// 获取导航栏数据
///
///
public async Task GetNavigationResults(int navigationId)
{
var result = new MiddleLableResult();
var navigation = await _navigationrepository.GetAsync(navigationId);
if (navigation.MiddleLableId > 0)
{
//获取中间页面
var middleLable = await _middleLableRepository.GetAsync(navigation.MiddleLableId);
if (string.IsNullOrEmpty(middleLable.LabelId))
return result;
result = _mapper.Map(middleLable);
result.NavigationLabelMediaResults = new List();
//获取轮播
if (middleLable.IsSlide)
{
if (result.IsSlide)
{
result.Sildes = await slideRepository.GetListAsync(result.TypeId);
foreach (var item in result.Sildes)
item.ImageUrl = StringUtils.AddDomain(item.ImageUrl);
}
}
//获取标签
var systemLabels = await _systemLabelRepository.GetAllAsync(StringUtils.StringCollectionToIntList(middleLable.LabelId).ToList());
foreach (var item in systemLabels)
{
//获取常规数据
var navigationLabelMediaResult = new NavigationLabelMediaResult()
{
Id = item.Id,
Sort = item.Sort,
StyleType = item.StyleType,
ActionUrl = item.ActionUrl,
ControllerUrl = item.ControllerUrl,
IsPage = item.IsPage,
IsSkip = item.IsSkip,
LabelName = item.LabelName,
ResourceType = item.ResourceType,
LabelNameDescribe = item.LabelNameDescribe,
Remark = item.Remark
};
// 特殊 130,示范课堂140,品牌专区1(150),品牌专区2(160)
var specialInts = systemLabels.Where(n => n.ResourceType >= 130).Select(n => n.ResourceType);
if (specialInts.Contains(item.ResourceType))
{
//获取特殊
navigationLabelMediaResult.IsSpecial = true;
navigationLabelMediaResult.SpecialLabelResults = await specialLabelRepository.GetAllAsync(item.ResourceType);
foreach (var specialLabelResult in navigationLabelMediaResult.SpecialLabelResults)
specialLabelResult.ImageUrls = StringUtils.AddDomain(specialLabelResult.ImageUrls);
result.NavigationLabelMediaResults.Add(navigationLabelMediaResult);
continue;
}
//获取媒体标签
var lableInts = new List { item.Id };
var medias = await _mediaRepository.GetNavigationMediaResults(lableInts);
navigationLabelMediaResult.MediaResults = medias.ToList();
foreach (var itemMedia in navigationLabelMediaResult.MediaResults)
itemMedia.ImageUrls = StringUtils.AddDomain(itemMedia.ImageUrls);
result.NavigationLabelMediaResults.Add(navigationLabelMediaResult);
}
}
return result;
}
}
}