Delete.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  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, RpcDeleteParameters, RpcDeleteResult>
  8. {
  9. protected override RpcDeleteResult Execute(IRpcSession session, RpcDeleteParameters parameters)
  10. {
  11. var user = CredentialsCache.ValidateAndRefresh(session.ID)
  12. ?? throw new RpcException("User not found in Credentials Cache!", RpcError.UNAUTHENTICATED);
  13. var store = DbFactory.FindStore(parameters.Type, user.ID, user.UserID, session.Platform, session.Version ?? "");
  14. var items = new List<Entity>();
  15. foreach (var id in parameters.IDs)
  16. {
  17. var item = (Activator.CreateInstance(parameters.Type) as Entity)!;
  18. item.ID = id;
  19. items.Add(item);
  20. }
  21. store.Delete(items, parameters.AuditNote);
  22. return new RpcDeleteResult();
  23. }
  24. public RpcDeleteHandler(IRpcServer sender) : base(sender)
  25. {
  26. }
  27. }
  28. }