public static Merchant CreateMerchantAccount(Guid internalId, MerchantInternalReference internalReference, string notificationEmail, string ownerName)
        {

            try
            {
                ManagementContext dc = new ManagementContext();
                Merchant merc = new Merchant();
                merc.AmountOnAccount = Convert.ToDecimal(0.00);
                merc.AutoAcceptPayment = true;
                merc.AutoShipWhenPaymentIsReceived = false;
                merc.Bank = "None";
                merc.BankAccount = String.Empty;
                merc.CurrencyRate = dc.ExchangeRates.Where(x => x.CurrencyAbbrName == "USD").FirstOrDefault();
                merc.InternalReference = internalId;
                merc.InternalReferenceType = Convert.ToByte(internalReference);
                merc.IsRDNation = false;
                merc.MerchantAccountStatus = Convert.ToByte(RDN.Library.Classes.Payment.Enums.MerchantAccountStatus.NotActive);
                merc.OrderPayedNotificationEmail = notificationEmail;
                if (String.IsNullOrEmpty(ownerName))
                    merc.OwnerName = "Shop";
                else
                    merc.OwnerName = ownerName;
                merc.PayedFeesToRDN = Convert.ToDecimal(0.00);
                merc.PrivateManagerId = Guid.NewGuid();
                merc.RDNFixedFee = Convert.ToDecimal(0.00);
                merc.RDNPercentageFee = 0.00;
                merc.ShippingNotificationEmail = notificationEmail;
                merc.ShopName = ownerName;
                merc.TaxRate = Convert.ToDouble(0.00);
                merc.MerchantId = Guid.NewGuid();
                merc.IsPublished = false;
                dc.Merchants.Add(merc);
                int c = dc.SaveChanges();
                if (c > 0)
                    return merc;
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return null;
        }
        public OverviewMerchant CreateMerchantAccount(Guid internalId, MerchantInternalReference internalReference)
        {
            OverviewMerchant merchant = new OverviewMerchant();
            try
            {
                var dc = new ManagementContext();
                string notificationEmail = String.Empty;
                string ownerName = String.Empty;

                if (internalReference == MerchantInternalReference.Member)
                {
                    var mem = dc.Members.Where(x => x.MemberId == internalId).FirstOrDefault();
                    if (mem != null && mem.ContactCard != null && mem.ContactCard.Emails.FirstOrDefault() != null)
                        notificationEmail = mem.ContactCard.Emails.FirstOrDefault().EmailAddress;
                    ownerName = mem.DerbyName;
                }

                Merchant merc = MerchantGateway.CreateMerchantAccount(internalId, internalReference, notificationEmail, ownerName);
                merchant.InternalReference = internalId;
                merchant.MerchantId = merc.MerchantId;
                merchant.PrivateManagerId = merc.PrivateManagerId;
                merchant.ShopName = merc.ShopName;
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return merchant;
        }