Delete.cs 1.3 KB

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