Skip to content

Commit

Permalink
Refactor media library service into repository
Browse files Browse the repository at this point in the history
TRAIN-1515
  • Loading branch information
Jan Lenoch committed Nov 26, 2019
1 parent 40e67d5 commit e22b89a
Show file tree
Hide file tree
Showing 7 changed files with 145 additions and 56 deletions.
4 changes: 2 additions & 2 deletions Business/Business.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -562,6 +562,8 @@
<Compile Include="Repository\Company\ICompanyServiceRepository.cs" />
<Compile Include="Repository\Contact\ContactSectionRepository.cs" />
<Compile Include="Repository\Contact\IContactSectionRepository.cs" />
<Compile Include="Repository\MediaLibrary\IMediaLibraryRepository.cs" />
<Compile Include="Repository\MediaLibrary\MediaLibraryRepository.cs" />
<Compile Include="Services\Culture\CultureService.cs" />
<Compile Include="Services\Culture\ICultureService.cs" />
<Compile Include="Repository\Doctor\DoctorRepository.cs" />
Expand All @@ -583,8 +585,6 @@
<Compile Include="Services\Cache\ICacheService.cs" />
<Compile Include="Services\Context\ISiteContextService.cs" />
<Compile Include="Services\IService.cs" />
<Compile Include="Services\MediaLibrary\IMediaLibraryService.cs" />
<Compile Include="Services\MediaLibrary\MediaLibraryService.cs" />
<Compile Include="Services\Query\DocumentQueryService.cs" />
<Compile Include="Services\Query\IDocumentQueryService.cs" />
</ItemGroup>
Expand Down
7 changes: 6 additions & 1 deletion Business/Dto/MediaLibrary/MediaLibraryFileDto.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
namespace Business.Dto.MediaLibrary
using System;

namespace Business.Dto.MediaLibrary
{
public class MediaLibraryFileDto : IDto
{
public Guid Guid { get; set; }
public string Title { get; set; }
public string DirectUrl { get; set; }
public string PermanentUrl { get; set; }
public string Extension { get; set; }
public int Width { get; set; }
public int Height { get; set; }
}
}
19 changes: 19 additions & 0 deletions Business/Repository/MediaLibrary/IMediaLibraryRepository.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System.Collections.Generic;

using Business.Dto.MediaLibrary;

namespace Business.Repository.MediaLibrary
{
public interface IMediaLibraryRepository : IRepository
{
string MediaLibraryName { get; set; }

string MediaLibrarySiteName { get; set; }

int? MediaLibraryId { get; set; }

int? MediaLibrarySiteId { get; set; }

IEnumerable<MediaLibraryFileDto> GetMediaLibraryDtos(params string[] extensions);
}
}
110 changes: 110 additions & 0 deletions Business/Repository/MediaLibrary/MediaLibraryRepository.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
using System;
using System.Collections.Generic;
using System.Linq;

using CMS.DataEngine;
using CMS.MediaLibrary;
using CMS.SiteProvider;

using Business.Dto.MediaLibrary;

namespace Business.Repository.MediaLibrary
{
public class MediaLibraryRepository : IMediaLibraryRepository
{
private int? _mediaLibraryId;
private int? _mediaLibrarySiteId;
private string _mediaLibraryName;
private string _mediaLibrarySiteName;

public int? MediaLibraryId
{
get => _mediaLibraryId == null && !string.IsNullOrEmpty(_mediaLibraryName) && !string.IsNullOrEmpty(_mediaLibrarySiteName)
? MediaLibraryInfoProvider
.GetMediaLibraryInfo(_mediaLibraryName, _mediaLibrarySiteName)?
.LibraryID
: _mediaLibraryId;

set
{
_mediaLibraryId = value;
}
}

public int? MediaLibrarySiteId
{
get => _mediaLibrarySiteId == null && !string.IsNullOrEmpty(_mediaLibrarySiteName)
? SiteInfoProvider.GetSiteID(_mediaLibrarySiteName)
: _mediaLibrarySiteId;

set
{
_mediaLibrarySiteId = value;
}
}

public string MediaLibraryName
{
get => string.IsNullOrEmpty(_mediaLibraryName) && _mediaLibraryId.HasValue
? MediaLibraryInfoProvider
.GetMediaLibraryInfo(_mediaLibraryId.Value)?
.LibraryName
: _mediaLibraryName;

set
{
_mediaLibraryName = value;
}
}

public string MediaLibrarySiteName
{
get
{
if (string.IsNullOrEmpty(_mediaLibrarySiteName) && _mediaLibrarySiteId.HasValue)
{
var siteId = MediaLibraryInfoProvider
.GetMediaLibraryInfo(_mediaLibrarySiteId.Value)?
.LibrarySiteID;

return siteId != null
? SiteInfoProvider.GetSiteInfo(siteId.Value)?.SiteName
: null;
}
else
{
return _mediaLibrarySiteName;
}
}

set
{
_mediaLibrarySiteName = value;
}
}

public IEnumerable<MediaLibraryFileDto> GetMediaLibraryDtos(params string[] extensions) =>
GetBaseQuery((baseQuery) =>
baseQuery.WhereIn("FileExtension", extensions));

protected IEnumerable<MediaLibraryFileDto> GetBaseQuery(Func<ObjectQuery<MediaFileInfo>, ObjectQuery<MediaFileInfo>> filter)
{
var baseQuery = MediaFileInfoProvider.GetMediaFiles()
.WhereEquals("FileLibraryID", MediaLibraryId);

return filter(baseQuery).Select(file => Selector(file));
}

protected MediaLibraryFileDto Selector(MediaFileInfo mediaFileInfo) =>
new MediaLibraryFileDto()
{
Guid = mediaFileInfo.FileGUID,
Title = mediaFileInfo.FileTitle,
Extension = mediaFileInfo.FileExtension,
DirectUrl = MediaLibraryHelper.GetDirectUrl(mediaFileInfo),
PermanentUrl = MediaLibraryHelper.GetPermanentUrl(mediaFileInfo),
Width = mediaFileInfo.FileImageWidth,
Height = mediaFileInfo.FileImageHeight
};
}
}
18 changes: 0 additions & 18 deletions Business/Services/MediaLibrary/IMediaLibraryService.cs

This file was deleted.

28 changes: 0 additions & 28 deletions Business/Services/MediaLibrary/MediaLibraryService.cs

This file was deleted.

15 changes: 8 additions & 7 deletions MedioClinic/Controllers/ContactController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,29 @@
using Business.DependencyInjection;
using Business.Repository.Contact;
using Business.Repository.Map;
using Business.Services.MediaLibrary;
using Business.Repository.MediaLibrary;
using MedioClinic.Models.Contact;

namespace MedioClinic.Controllers
{
public class ContactController : BaseController
{

private IContactSectionRepository ContactSectionRepository { get; }
private IMapRepository MapRepository { get; }
private IMediaLibraryService MediaLibraryService { get; }
private IMediaLibraryRepository MediaLibraryRepository { get; }

public ContactController(
IBusinessDependencies dependencies,
IBusinessDependencies dependencies,
IContactSectionRepository contactSectionRepository,
IMapRepository mapRepository,
IMediaLibraryService mediaLibraryService
IMediaLibraryRepository mediaLibraryRepository
) : base(dependencies)
{
ContactSectionRepository = contactSectionRepository;
MapRepository = mapRepository;
MediaLibraryService = mediaLibraryService;
MediaLibraryRepository = mediaLibraryRepository;
MediaLibraryRepository.MediaLibraryName = "MedicalCenters";
MediaLibraryRepository.MediaLibrarySiteName = Dependencies.SiteContextService.SiteName;
}

public ActionResult Index()
Expand All @@ -39,7 +40,7 @@ public ActionResult Index()
{
ContactSection = contactSection,
OfficeLocations = MapRepository.GetOfficeLocations(),
MedicalCenterImages = MediaLibraryService.GetMediaLibraryFiles("MedicalCenters", Dependencies.SiteContextService.SiteName, ".jpg", ".png")
MedicalCenterImages = MediaLibraryRepository.GetMediaLibraryDtos(".jpg", ".png")
}, contactSection.Header);

return View(model);
Expand Down

0 comments on commit e22b89a

Please sign in to comment.