private JobStates domainCancel(Job job) { OrderItem oi = Provider.Database.Read <OrderItem>("Id={0}", job.RelatedEntityId); if (oi == null) { throw new APIException("OrderItem not found. refNo: " + job.RelatedEntityId); } MemberProduct mp = Provider.Database.Read <MemberProduct>("OrderItemId = {0}", oi.Id); if (mp == null) { throw new APIException("Critical error: OrderItem exists but MemberProduct doesn't, for orderItem : " + oi.Id); } MemberDomain md = Provider.Database.Read <MemberDomain>("Id = {0}", mp.Id); if (md == null) { throw new APIException("Critical error: MemberProduct exists but MemberDomain doesn't, for memberProduct : " + mp.Id); } if (mp.StartDate < Provider.Database.Now.AddDays(-5)) { throw new APIException("You can cancel your domain and refund in the first 5 days of your domain registration."); } var eppApi = new EppAPI(); eppApi.DomainDelete(new DealerSafe.DTO.Epp.Request.ReqDomainDelete { DomainName = md.DomainName }); md.Delete(); mp.Delete(); oi.Cancel(); return(JobStates.Done); }