12345678910111213141516171819202122232425262728293031323334353637 |
- using InABox.API;
- using InABox.Core;
- using InABox.Database;
- using InABox.Server;
- using Microsoft.Exchange.WebServices.Data;
- namespace InABox.Rpc
- {
-
- public class RpcDeleteHandler : RpcCommandHandler<IRpcServer, RpcDeleteCommand, RpcDeleteParameters, RpcDeleteResult>
- {
- public RpcDeleteHandler(IRpcServer sender) : base(sender)
- {
- }
- protected override RpcDeleteResult Execute(IRpcSession session, RpcDeleteParameters parameters)
- {
- var user = CredentialsCache.ValidateAndRefresh(session.ID)
- ?? throw new RpcException("User not found in Credentials Cache!", RpcError.UNAUTHENTICATED);
- var store = DbFactory.FindStore(parameters.Type, user.ID, user.UserID, session.Platform, session.Version ?? "");
-
- var items = new List<Entity>();
- foreach (var id in parameters.IDs)
- {
- var item = (Activator.CreateInstance(parameters.Type) as Entity)!;
- item.ID = id;
- items.Add(item);
- }
- store.Delete(items, parameters.AuditNote);
-
- InABox.API.CredentialsCache.Refresh(parameters.Type == typeof(InABox.Core.User));
- return new RpcDeleteResult();
- }
- }
- }
|