Delete.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using InABox.API;
  2. using InABox.Core;
  3. using InABox.Database;
  4. using Microsoft.Exchange.WebServices.Data;
  5. namespace InABox.Rpc
  6. {
  7. public class RpcDeleteHandler : RpcCommandHandler<IRpcServer, RpcDeleteCommand, RpcDeleteParameters, RpcDeleteResult>
  8. {
  9. public RpcDeleteHandler(IRpcServer sender) : base(sender)
  10. {
  11. }
  12. protected override RpcDeleteResult Execute(IRpcSession session, RpcDeleteParameters parameters, Logger logger)
  13. {
  14. var user = CredentialsCache.ValidateAndRefresh(session.ID)
  15. ?? throw new RpcException("User not found in Credentials Cache!", RpcError.UNAUTHENTICATED);
  16. var store = DbFactory.FindStore(parameters.Type, user.ID, user.UserID, session.Platform, session.Version ?? "", logger);
  17. var items = new List<Entity>();
  18. foreach (var id in parameters.IDs)
  19. {
  20. var item = (Activator.CreateInstance(parameters.Type) as Entity)!;
  21. item.ID = id;
  22. items.Add(item);
  23. }
  24. store.Delete(items, parameters.AuditNote);
  25. InABox.API.CredentialsCache.Refresh(parameters.Type == typeof(InABox.Core.User));
  26. return new RpcDeleteResult();
  27. }
  28. }
  29. }