예제 #1
0
        public void Delete(Guid id)
        {
            ApiToken apiToken = _apiTokenRepository.Get(id);

            _apiTokenRepository.Delete(apiToken);

            _unitOfWork.Commit();
        }
예제 #2
0
        public void Delete(Guid id)
        {
            Customer customer = _customerRepository.Get(id);

            // Remove Customer from stripe service
            if (!string.IsNullOrEmpty(customer.PaymentCustomerId))
            {
                try
                {
                    if (StripeFactory.GetStripeService().GetCustomer(customer.PaymentCustomerId) != null)
                    {
                        StripeFactory.GetStripeService().DeleteCustomer(customer.PaymentCustomerId);
                    }
                    LoggingFactory.GetLogger().Log("Customer not found", EventLogSeverity.Fatal);
                }catch (Exception ex)
                {
                    LoggingFactory.GetLogger().LogError(ex);
                }
            }

            _unitOfWork.Begin();

            // Delete relations between users and roles
            foreach (var role in customer.Roles)
            {
                role.RoleUsers.Clear();
                _roleRepository.Update(role);
            }

            // Delete Notes
            if (customer.Notes != null)
            {
                foreach (var note in customer.Notes.ToList())
                {
                    _noteRepository.Delete(note);
                }
            }


            // Delete API records
            if (customer.ApiTokens != null)
            {
                foreach (var apiToken in customer.ApiTokens.ToList())
                {
                    _apitokensRepository.Delete(apiToken);
                }
            }

            // Delete IPS records
            if (customer.IPSEntries != null)
            {
                foreach (var ipsEntry in customer.IPSEntries.ToList())
                {
                    _ipsEntryRepository.Delete(ipsEntry);
                }
            }


            //delete all reference list items
            if (customer.ReferenceListItems != null)
            {
                foreach (var item in customer.ReferenceListItems.ToList())
                {
                    _referenceListItemRepository.Delete(item);
                }
            }

            // delete all users
            if (customer.Users != null)
            {
                foreach (var user in customer.Users.ToList())
                {
                    _userRepository.Delete(user);
                }
            }


            //// delete all payments
            //foreach (var payment in _customerPaymentRepository.Query().Where(x => x.CustomerId == id).ToList())
            //{
            //    _customerPaymentRepository.Delete(payment);
            //}

            //// delete all payment refunds
            //foreach (var paymentRefund in _customerPaymentRefundRepository.Query().Where(x => x.CustomerId == id).ToList())
            //{
            //    _customerPaymentRefundRepository.Delete(paymentRefund);
            //}

            _customerRepository.Delete(customer);

            _unitOfWork.End();
        }