Example #1
0
        private OrderInfo placeOrderForDomain(ReqPlaceOrderForDomain req, ProductPriceTypes op)
        {
            if (req.DomainName.IsEmpty())
            {
                throw new APIException("DomainName parameter cannot be empty");
            }

            var extension = DomainUtility.GetZoneFromDomainName(req.DomainName);

            if (extension == null)
            {
                throw new APIException("We dont have such extension: " + DomainUtility.GetDomainExtension(req.DomainName));
            }

            ProductPrice pp = Provider.Database.Read <ProductPrice>("ProductId = {0} AND ProductPriceType = {1} AND Amount = {2}", extension.Id, op.ToString(), req.Years);

            if (pp == null)
            {
                pp = Provider.Database.Read <ProductPrice>("ProductId = {0} AND ProductPriceType = {1}", extension.Id, op.ToString());
            }
            if (pp == null)
            {
                throw new APIException("There is no ProductPrice for Product " + extension.Id + " and ProductPriceType " + op + " with amount of " + req.Years + " years");
            }

            OrderItemInfo oi = new OrderItemInfo()
            {
                ProductPriceId = pp.Id, Amount = req.Years
            };

            oi.DisplayName = req.DomainName;

            var basket = Order.GetMemberBasket();

            basket.RemoveAllItems();
            basket.AddItem(oi);

            if (basket.TotalPrice == 0)
            {
                throw new APIException("Order total price must be bigger than zero");
            }

            var reseller = Provider.CurrentMember.GetAdminResellerMember();

            if (reseller == null)
            {
                throw new APIException("Reseller undefined! (This Member's ClientId should have an AdminMemberId)");
            }

            if (reseller.CreditBalance < basket.TotalPrice)
            {
                throw new APIException("Insufficient credits");
            }

            var order = CreateOrderFromBasket("");

            return(order);
        }
Example #2
0
        public string PlaceOrderForTransfer(ReqPlaceOrderForDomain req)
        {
            if (req.TransferCode.IsEmpty())
            {
                throw new APIException("TransferCode parameter cannot be empty");
            }

            var order = placeOrderForDomain(req, ProductPriceTypes.Transfer);

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

            if (memberDomain == null)
            {
                throw new APIException("Critical error: MemberDomain record for domain name (" + req.DomainName + ") for transfer not found!!!");
            }

            memberDomain.AuthInfo = req.TransferCode;
            memberDomain.Save();

            var job = Provider.Database.Read <Job>("RelatedEntityName={0} AND RelatedEntityId={1}", "OrderItem", order.Items[0].Id);

            job.State = JobStates.Done;
            job.Save();

            new Job()
            {
                Command           = JobCommands.DomainTransferQuery,
                Name              = req.DomainName,
                RelatedEntityName = "OrderItem",
                RelatedEntityId   = order.Items[0].Id,
                State             = JobStates.NotStarted,
                Executer          = JobExecuters.Machine
            }.Save();

            return(order.Items[0].Id);
        }
Example #3
0
        public string PlaceOrderForRestore(ReqPlaceOrderForDomain req)
        {
            var order = placeOrderForDomain(req, ProductPriceTypes.Restore);

            return(order.Items[0].Id);
        }