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); }
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); }
public string PlaceOrderForRestore(ReqPlaceOrderForDomain req) { var order = placeOrderForDomain(req, ProductPriceTypes.Restore); return(order.Items[0].Id); }