コード例 #1
0
ファイル: Member.cs プロジェクト: fizikci/DomainMarketing
        public MemberDomain CreateNewMemberDomain(string domainName, string orderItemId)
        {
            var memberDomain = new MemberDomain();

            memberDomain.DomainName             = domainName;
            memberDomain.AdminDomainContactId   = DomainDefaults(domainName).AdminDomainContactId;
            memberDomain.BillingDomainContactId = DomainDefaults(domainName).BillingDomainContactId;
            memberDomain.OwnerDomainContactId   = DomainDefaults(domainName).OwnerDomainContactId;
            memberDomain.TechDomainContactId    = DomainDefaults(domainName).TechDomainContactId;
            memberDomain.RenewalMode            = DomainDefaults(domainName).RenewalMode;
            memberDomain.TransferMode           = DomainDefaults(domainName).TransferMode;
            memberDomain.PrivacyProtection      = DomainDefaults(domainName).PrivacyProtection;
            memberDomain.NameServers            = DomainDefaults(domainName).NameServers;
            memberDomain.AuthInfo = Utility.CreatePassword(6).ToLowerInvariant() + "!1Fbs";
            memberDomain.Save();

            MemberProduct memberProduct = new MemberProduct();

            memberProduct.OrderItemId = orderItemId;
            memberProduct.Id          = memberDomain.Id;
            memberProduct.InsertDate  = Provider.Database.Now;
            memberProduct.MemberId    = this.Id;
            memberProduct.Name        = domainName;
            Provider.Database.Insert("MemberProduct", memberProduct);

            return(memberDomain);
        }
コード例 #2
0
        public string GetOrderStatus(string orderReference)
        {
            OrderItem oi = Provider.Database.Read <OrderItem>("Id={0}", orderReference);

            if (oi == null)
            {
                throw new APIException("OrderItem not found. refNo: " + orderReference);
            }

            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.MemberId != Provider.CurrentMember.Id)
            {
                throw new APIException("GetOrderStatus request can only be send by the domain owner");
            }

            return(md.RegistryStatus);
        }
コード例 #3
0
        public bool UpdateDomainNameServers(ReqUpdateDomainNameServers req)
        {
            MemberDomain md = Provider.Database.Read <MemberDomain>("DomainName = {0}", req.DomainName);

            if (md == null)
            {
                throw new APIException("Domain name not found: " + req.DomainName);
            }

            MemberProduct mp = Provider.Database.Read <MemberProduct>("Id = {0}", md.Id);

            if (mp == null)
            {
                throw new APIException("Critical error: MemberDomain exists but MemberProduct doesn't, for domain : " + req.DomainName);
            }

            if (mp.MemberId != Provider.CurrentMember.Id)
            {
                throw new APIException("Creditentials not authorized for this domain: " + req.DomainName);
            }

            EppAPI eppApi = new EppAPI();

            var res = eppApi.HostCheck(new DealerSafe.DTO.Epp.Request.ReqHostCheck {
                DomainName = req.DomainName, HostNames = req.NameServers
            });

            foreach (var hostInfo in res.HostInfos)
            {
                if (hostInfo.Available)
                {
                    var res2 = eppApi.HostCreate(new DealerSafe.DTO.Epp.Request.ReqHostCreate {
                        DomainName = req.DomainName, HostName = hostInfo.HostName
                    });
                }
            }

            var res3 = eppApi.DomainUpdate(new DealerSafe.DTO.Epp.Request.ReqDomainUpdate
            {
                Rem = new Epp.Protocol.Domains.DomainAddRemType
                {
                    NameServers = new Epp.Protocol.Domains.NameServerList(md.NameServers.SplitWithTrim(',').Select(ns => new NameServerInfo {
                        HostName = ns
                    }))
                },
                Add = new Epp.Protocol.Domains.DomainAddRemType
                {
                    NameServers = new Epp.Protocol.Domains.NameServerList(req.NameServers.Select(ns => new NameServerInfo {
                        HostName = ns
                    }))
                },
                DomainName = req.DomainName
            });

            return(true);
        }
コード例 #4
0
        private void btnCard_Click(object sender, System.EventArgs e)
        {
            try
            {
                UltraGridRow row = this.ultraGrid1.ActiveRow;
                if (null == row)
                {
                    throw new BusinessException("删除未发卡会员", "请从查询结果中选择进行删除的会员资料");
                }

                string    strMemberCardNo = row.Cells["cnvcMemberCardNo"].Value.ToString();
                DataTable dtMember        = Helper.Query("select * from tbMember where cnvcState='" + ConstApp.Card_State_NoCard + "' and cnvcMemberCardNo ='" + strMemberCardNo + "'");
                if (dtMember.Rows.Count != 1)
                {
                    throw new BusinessException("删除未发卡会员", "未找到相应的未发卡会员资料");
                }
                Member member = new Member(dtMember);
                member.cnvcMemberCardNo = strMemberCardNo;
                member.cnvcOperName     = this.oper.cnvcOperName;
                member.cndOperDate      = DateTime.Now;
                DataTable dtMemberProduct = Helper.Query("select * from tbMemberProduct where cnvcMemberCardNo = '" + strMemberCardNo + "'");
                string    strProduct      = "";
                foreach (DataRow drProduct in dtMemberProduct.Rows)
                {
                    MemberProduct product = new MemberProduct(drProduct);
                    strProduct += product.cnvcProductName + ",,,," + product.cnvcFree + ",|";
                }

                DialogResult dr = MessageBox.Show(this, "【会员卡号】" + member.cnvcMemberCardNo + "\n【工商注册号】" + member.cnvcPaperNo + "\n【单位名称】" + member.cnvcMemberName, "信息确认", MessageBoxButtons.YesNo, MessageBoxIcon.Information);

                if (dr == DialogResult.Yes)
                {
                    MemberManageFacade mm = new MemberManageFacade();
                    mm.NoCardDelete(member);
                    MessageBox.Show(this, "删除成功!", "删除未发卡会员");

                    btnQuery_Click(null, null);
                }
            }
            catch (BusinessException bex)
            {
                MessageBox.Show(this, bex.Message, bex.Type, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(this, ex.Message, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
コード例 #5
0
        public bool CancelOrderAndRefund(string orderReference)
        {
            OrderItem oi = Provider.Database.Read <OrderItem>("Id={0}", orderReference);

            if (oi == null)
            {
                throw new APIException("OrderItem not found. refNo: " + orderReference);
            }

            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);
            }

            if (mp.MemberId != Provider.CurrentMember.Id)
            {
                throw new APIException("Cancellation and refund request can only be send by the domain owner");
            }

            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 job = new Job {
                Command           = JobCommands.DomainCancel,
                Executer          = JobExecuters.Machine,
                RelatedEntityId   = oi.Id,
                RelatedEntityName = "OrderItem",
                StartDate         = Provider.Database.Now,
                State             = JobStates.NotStarted
            };

            job.Save();

            return(true);
        }
コード例 #6
0
        public string SaveMemberDomain(MemberDomainInfo req)
        {
            MemberDomain md = new MemberDomain();
            req.CopyPropertiesWithSameName(md);

            md.Id = req.DomainName.Trim();

            Provider.Database.Insert("MemberDomain", md);

            MemberProduct mp = new MemberProduct();
            req.CopyPropertiesWithSameName(mp);
            mp.Id = md.Id;

            Provider.Database.Insert("MemberProduct", mp);

            return md.Id;
        }
コード例 #7
0
ファイル: WorkerSSL.cs プロジェクト: fizikci/DomainMarketing
        public override void CreateJobsFor(Order order)
        {
            foreach (var item in order.Items.Where(item => item.Product().ProductType().Name == "SSL"))
            {
                try
                {
                    Provider.Database.Begin();

                    var job = new Job()
                    {
                        Command           = JobCommands.SSLNewOrder,
                        Name              = item.DisplayName,
                        RelatedEntityName = "OrderItem",
                        RelatedEntityId   = item.Id,
                        State             = JobStates.NotStarted,
                        Executer          = JobExecuters.Member,
                        ExecuterId        = order.MemberId
                    };
                    job.Save();

                    var memberSSL = new MemberSSL();
                    //memberSSL.OrderItemId = item.Id;
                    memberSSL.State = SSLStates.None;
                    memberSSL.Save();

                    var now = Provider.Database.Now;

                    var memberProduct = new MemberProduct();
                    memberProduct.Id          = memberSSL.Id;
                    memberProduct.OrderItemId = item.Id;
                    memberProduct.StartDate   = now;
                    memberProduct.EndDate     = now.AddYears(item.Amount);
                    memberProduct.InsertDate  = now;
                    memberProduct.Name        = item.DisplayName;
                    Provider.Database.Insert("MemberProduct", memberProduct);

                    Provider.Database.Commit();
                }
                catch (Exception ex)
                {
                    Provider.Database.Rollback();
                    throw;
                }
            }
        }
コード例 #8
0
        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);
        }
コード例 #9
0
 public JsonResult AddNewOwn(string ids, string cid)
 {
     string[] idd = ids.Substring(0, ids.Length - 1).Split(',');
     foreach (string i in idd)
     {
         MemberProduct mp = new MemberProduct();
         mp.EnterpriseCode = cid;
         mp.ProductCode = i;
         try
         {
             new MemberProductDao().Insert(mp);
         }
         catch (Exception e)
         {
             return Json("添加失败");
         }
     }
     return Json("添加成功");
 }
コード例 #10
0
        private void btnCard_Click(object sender, System.EventArgs e)
        {
            try
            {
                UltraGridRow row = this.ultraGrid1.ActiveRow;
                if (null == row)
                {
                    throw new BusinessException("重新发卡", "请从查询结果中选择进行发卡的会员资料");
                }
                if (txtMemberCardNo.Text.Trim().Length == 0)
                {
                    throw new BusinessException("重新发卡", "请输入卡号");
                }
                string strNewMemberCardNo = txtMemberCardNo.Text;                //row.Cells["cnvcMemberCardNo"].Value.ToString();
//				if (strNewMemberCardNo.StartsWith("A")||strNewMemberCardNo.StartsWith("B"))
//				{
//					throw new BusinessException("重新发卡","卡号必须为数字,现在卡号是:"+strNewMemberCardNo);
//				}
//				if (strNewMemberCardNo.Trim().Length < 8)
//				{
//					throw new BusinessException("重新发卡","卡号必须8位");
//				}
                if (strNewMemberCardNo.Trim().Length < 8)
                {
                    throw new BusinessException("重新发卡", "会员卡号必须是8位!");
                }
                else
                {
                    //string strMemberCardNo = txtMemberCardNo.Text.Trim();
                    if (strNewMemberCardNo.Equals("00000000"))
                    {
                        throw new BusinessException("重新发卡", "会员卡号不能都为零");
                    }
                    else
                    {
                        //判断卡号是否存在
                        DataTable dtIsMember = Helper.Query("select * from tbMember where cnvcMemberCardNo = '" + strNewMemberCardNo + "'");
                        if (dtIsMember.Rows.Count > 0)
                        {
                            throw new BusinessException("重新发卡", "会员卡号已存在");
                        }
                    }
                }
                string    strMemberCardNo = row.Cells["cnvcOldMemberCardNo"].Value.ToString();
                DataTable dtMember        = Helper.Query("select * from tbMember where cnvcState='" + ConstApp.Card_State_NoCard + "' and cnvcMemberCardNo ='" + strMemberCardNo + "'");
                if (dtMember.Rows.Count != 1)
                {
                    throw new BusinessException("重新发卡", "未找到相应的会员资料");
                }
                Member member = new Member(dtMember);
                //member.cnvcMemberCardNo = strNewMemberCardNo;
                member.cnvcProduct  = strNewMemberCardNo;
                member.cnvcOperName = this.oper.cnvcOperName;
                member.cndOperDate  = DateTime.Now;
                DataTable dtMemberProduct = Helper.Query("select * from tbMemberProduct where cnvcMemberCardNo = '" + strMemberCardNo + "'");
                string    strProduct      = "";
                foreach (DataRow drProduct in dtMemberProduct.Rows)
                {
                    MemberProduct product = new MemberProduct(drProduct);
                    strProduct += product.cnvcProductName + ",,,," + product.cnvcFree + ",|";
                }

                DialogResult dr = MessageBox.Show(this, "【会员卡号】" + member.cnvcProduct + "\n【工商注册号】" + member.cnvcPaperNo + "\n【单位名称】" + member.cnvcMemberName, "信息确认", MessageBoxButtons.YesNo, MessageBoxIcon.Information);

                if (dr == DialogResult.Yes)
                {
                    PrintedBill pBill = new PrintedBill(member.ToTable());
                    pBill.cnvcMemberCardNo = strNewMemberCardNo;
                    pBill.cnvcBillType     = ConstApp.Bill_Type_Provide;
                    pBill.cnvcProduct      = strProduct;
                    MemberManageFacade mm = new MemberManageFacade();
                    mm.RenewCard(member, pBill);
                    pBill.cnvcProduct = "";
                    Helper.PrintTicket(pBill);
                    MessageBox.Show(this, "发卡成功!", "发卡");
                    this.txtMemberCardNo.Text = "";
                    this.txtPPaperNo.Text     = "";
                    this.txtPMemberName.Text  = "";
                    this.txtPrepay.Text       = "";
                }
            }
            catch (BusinessException bex)
            {
                MessageBox.Show(this, bex.Message, bex.Type, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(this, ex.Message, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
コード例 #11
0
        private JobStates domainRestore(Job job)
        {
            // according to https://tools.ietf.org/html/rfc3915

            var orderItem = Provider.Database.Read <OrderItem>("Id={0}", job.RelatedEntityId);
            var member    = orderItem.Order().Member();


            var memberDomain = Provider.Database.Read <MemberDomain>("DomainName={0}", orderItem.DisplayName);

            if (memberDomain == null)
            {
                throw new Exception("MemberDomain record not found. If a domain name is not in our database, cannot be restored.");
            }

            var eppApi = new EppAPI();

            var req = new ReqDomainInfo();

            req.DomainName = memberDomain.DomainName;

            var res = eppApi.DomainInfo(req);

            // eğer domain state OK ise restore işlemi tamamlanmıştır
            if (res.Statuses.FirstOrDefault(s => s.Status == Epp.Protocol.Shared.Status.Ok) != null)
            {
                var memberProduct = Provider.Database.Read <MemberProduct>("Id={0}", memberDomain.Id);
                if (memberProduct == null)
                {
                    //null olmaması gerekir ama bir hatadan dolayı null ise hemen create edelim. bi sakınca yok
                    memberProduct = new MemberProduct
                    {
                        StartDate   = res.CreationDate.Value,
                        OrderItemId = job.RelatedEntityId,
                        MemberId    = member.Id,
                    };
                }

                memberProduct.EndDate = res.ExpirationDate.Value;
                memberProduct.Save();

                memberDomain.RegistryStatus = res.Statuses.StringJoin(",");
                memberDomain.RGPStatus      = res.ExtRgp == null ? statusValueType.NONE : res.ExtRgp.rgpStatus.FirstOrDefault().s;

                memberDomain.Save();

                return(JobStates.Done);
            }

            // eğer domain state OK değilse, pendingDelete de değilse, restore'da ne işin var kardeşim?
            if (res.Statuses.FirstOrDefault(s => s.Status == Epp.Protocol.Shared.Status.PendingDelete) == null)
            {
                throw new Exception("A domain with no pendingDelete status cannot be restored.");
            }

            // eğer domain redemptionPeriod'da ise, restore request komutunu göndeririz
            if (res.ExtRgp.rgpStatus.FirstOrDefault(s => s.s == statusValueType.redemptionPeriod) != null)
            {
                var reqRestore = new ReqDomainUpdate
                {
                    DomainName = memberDomain.DomainName,
                    ExtRgp     = new DealerSafe.DTO.Epp.Protocol.Rgp.updateType
                    {
                        restore = new DealerSafe.DTO.Epp.Protocol.Rgp.restoreType
                        {
                            op = DealerSafe.DTO.Epp.Protocol.Rgp.rgpOpType.request
                        }
                    }
                };

                var resRestore = eppApi.DomainUpdate(reqRestore);

                job.StartDate = Provider.Database.Now.AddMinutes(10);

                return(JobStates.TryAgain);
            }

            // eğer domain pendingRestore'da ise, restore report komutunu göndeririz
            if (res.ExtRgp.rgpStatus.FirstOrDefault(s => s.s == statusValueType.pendingRestore) != null)
            {
                var reqReport = new ReqDomainUpdate
                {
                    DomainName = memberDomain.DomainName,
                    ExtRgp     = new DealerSafe.DTO.Epp.Protocol.Rgp.updateType
                    {
                        restore = new DealerSafe.DTO.Epp.Protocol.Rgp.restoreType
                        {
                            op = DealerSafe.DTO.Epp.Protocol.Rgp.rgpOpType.report
                        }
                    }
                };

                var resRestore = eppApi.DomainUpdate(reqReport);

                job.StartDate = Provider.Database.Now.AddMinutes(10);

                return(JobStates.TryAgain);
            }

            job.StartDate = Provider.Database.Now.AddMinutes(10);
            return(JobStates.TryAgain);
        }