Files
Umbraco-CMS/src/Umbraco.Core/Services/Implement/MemberGroupService.cs

146 lines
5.2 KiB
C#
Raw Normal View History

2017-07-20 11:21:28 +02:00
using System.Collections.Generic;
using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Repositories;
2017-12-07 16:45:25 +01:00
using Umbraco.Core.Persistence.Repositories.Implement;
2017-12-12 15:04:13 +01:00
using Umbraco.Core.Scoping;
2017-12-28 09:18:09 +01:00
namespace Umbraco.Core.Services.Implement
{
public class MemberGroupService : RepositoryService, IMemberGroupService
{
2017-12-12 15:04:13 +01:00
private readonly IMemberGroupRepository _memberGroupRepository;
public MemberGroupService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory,
IMemberGroupRepository memberGroupRepository)
: base(provider, logger, eventMessagesFactory)
{
2017-12-12 15:04:13 +01:00
_memberGroupRepository = memberGroupRepository;
//Proxy events!
MemberGroupRepository.SavedMemberGroup += MemberGroupRepository_SavedMemberGroup;
MemberGroupRepository.SavingMemberGroup += MemberGroupRepository_SavingMemberGroup;
}
#region Proxied event handlers
2017-05-12 14:49:44 +02:00
void MemberGroupRepository_SavingMemberGroup(IMemberGroupRepository sender, SaveEventArgs<IMemberGroup> e)
{
2017-05-12 14:49:44 +02:00
// fixme - wtf?
// why is the repository triggering these events?
// and, the events are *dispatched* by the repository so it makes no sense dispatching them again!
// v7.6
//using (var scope = UowProvider.ScopeProvider.CreateScope())
//{
// scope.Complete(); // always
// if (scope.Events.DispatchCancelable(Saving, this, new SaveEventArgs<IMemberGroup>(e.SavedEntities)))
// e.Cancel = true;
//}
// v8
if (Saving.IsRaisedEventCancelled(new SaveEventArgs<IMemberGroup>(e.SavedEntities), this))
e.Cancel = true;
}
void MemberGroupRepository_SavedMemberGroup(IMemberGroupRepository sender, SaveEventArgs<IMemberGroup> e)
{
2017-05-12 14:49:44 +02:00
// same as above!
Saved.RaiseEvent(new SaveEventArgs<IMemberGroup>(e.SavedEntities, false), this);
2016-06-08 13:12:11 +02:00
}
2017-05-12 14:49:44 +02:00
#endregion
public IEnumerable<IMemberGroup> GetAll()
{
using (var scope = ScopeProvider.CreateScope(autoComplete: true))
{
2017-12-12 15:04:13 +01:00
return _memberGroupRepository.GetMany();
}
}
public IMemberGroup GetById(int id)
{
using (var scope = ScopeProvider.CreateScope(autoComplete: true))
{
2017-12-12 15:04:13 +01:00
return _memberGroupRepository.Get(id);
}
}
public IMemberGroup GetByName(string name)
{
using (var scope = ScopeProvider.CreateScope(autoComplete: true))
{
2017-12-12 15:04:13 +01:00
return _memberGroupRepository.GetByName(name);
}
}
public void Save(IMemberGroup memberGroup, bool raiseEvents = true)
{
2017-12-12 15:04:13 +01:00
using (var scope = ScopeProvider.CreateScope())
{
2017-09-18 15:33:13 +02:00
var saveEventArgs = new SaveEventArgs<IMemberGroup>(memberGroup);
2017-12-12 15:04:13 +01:00
if (raiseEvents && scope.Events.DispatchCancelable(Saving, this, saveEventArgs))
{
2017-12-12 15:04:13 +01:00
scope.Complete();
return;
}
2017-12-12 15:04:13 +01:00
_memberGroupRepository.Save(memberGroup);
scope.Complete();
2017-05-12 14:49:44 +02:00
if (raiseEvents)
2017-09-18 15:33:13 +02:00
{
saveEventArgs.CanCancel = false;
2017-12-12 15:04:13 +01:00
scope.Events.Dispatch(Saved, this, saveEventArgs);
2017-09-18 15:33:13 +02:00
}
2017-05-12 14:49:44 +02:00
}
}
public void Delete(IMemberGroup memberGroup)
{
2017-12-12 15:04:13 +01:00
using (var scope = ScopeProvider.CreateScope())
{
2017-09-18 15:33:13 +02:00
var deleteEventArgs = new DeleteEventArgs<IMemberGroup>(memberGroup);
2017-12-12 15:04:13 +01:00
if (scope.Events.DispatchCancelable(Deleting, this, deleteEventArgs))
2017-05-12 14:49:44 +02:00
{
2017-12-12 15:04:13 +01:00
scope.Complete();
2017-05-12 14:49:44 +02:00
return;
}
2017-12-12 15:04:13 +01:00
_memberGroupRepository.Delete(memberGroup);
scope.Complete();
2017-09-18 15:33:13 +02:00
deleteEventArgs.CanCancel = false;
2017-12-12 15:04:13 +01:00
scope.Events.Dispatch(Deleted, this, deleteEventArgs);
2017-05-12 14:49:44 +02:00
}
}
/// <summary>
/// Occurs before Delete of a member group
/// </summary>
public static event TypedEventHandler<IMemberGroupService, DeleteEventArgs<IMemberGroup>> Deleting;
/// <summary>
/// Occurs after Delete of a member group
/// </summary>
public static event TypedEventHandler<IMemberGroupService, DeleteEventArgs<IMemberGroup>> Deleted;
/// <summary>
/// Occurs before Save of a member group
2016-06-08 13:12:11 +02:00
/// </summary>
/// <remarks>
/// We need to proxy these events because the events need to take place at the repo level
/// </remarks>
public static event TypedEventHandler<IMemberGroupService, SaveEventArgs<IMemberGroup>> Saving;
/// <summary>
/// Occurs after Save of a member group
/// </summary>
/// <remarks>
/// We need to proxy these events because the events need to take place at the repo level
/// </remarks>
public static event TypedEventHandler<IMemberGroupService, SaveEventArgs<IMemberGroup>> Saved;
}
2017-07-20 11:21:28 +02:00
}