예제 #1
0
        /// <summary>
        /// Gets plans from Reepay
        /// </summary>
        /// <param name="onlyActive">only active plans</param>
        /// <returns>statuscode and list ofplans</returns>
        public ApiResponse <List <Plan> > GetPlans(bool onlyActive)
        {
            var config      = this.GetDefaultApiConfiguration();
            var api         = new PlanApi(config);
            var myClassname = MethodBase.GetCurrentMethod().Name;

            for (var i = 0; i <= MaxNoOfRetries; i++)
            {
                try
                {
                    var apiResponse = api.GetPlansListWithHttpInfo(onlyActive);
                    return(apiResponse);
                }
                catch (ApiException apiException)
                {
                    this._log.Error($"{myClassname} {apiException.ErrorCode} {apiException.ErrorContent}");
                    return(new ApiResponse <List <Plan> >(apiException.ErrorCode, null, null));

                    ;
                }
                catch (Exception) when(i < MaxNoOfRetries)
                {
                    this._log.Debug($"{myClassname} retry attempt {i}");
                }
            }

            return(new ApiResponse <List <Plan> >((int)HttpStatusCode.InternalServerError, null, null));
        }
        public async Task Change_a_subscription_plan()
        {
            // Arrange
            var subscriptionRequest = await SubscriptionApi.GetAsync <PaggedResponseMessage <SubscriptionModel> >().ConfigureAwait(false);

            var subscriptionItems = new List <SubscriptionSubitem> {
                new SubscriptionSubitem {
                    description = "Mensalidade", price_cents = 65000, quantity = 1, recurrent = true
                }
            };
            var request = new Request.SubscriptionRequestMessage(createdCustomer.id)
            {
                PlanId        = createdPlan.identifier,
                IsCreditBased = false,
                Subitems      = subscriptionItems
            };
            var currentSubscription = await SubscriptionApi.CreateAsync(request).ConfigureAwait(false);

            var radomPlan = Guid.NewGuid().ToString();
            var newdPlan  = await PlanApi.CreateAsync($"{radomPlan}-12x", $"{radomPlan}-Plan", 1, "months", 0, "BRL", null, null, Constants.PaymentMethod.BANK_SLIP).ConfigureAwait(false);

            // Act
            var suspendendSubscription = await SubscriptionApi.ChangePlanAsync(currentSubscription.id, newdPlan.identifier).ConfigureAwait(false);

            // Assert
            suspendendSubscription.Should().NotBeSameAs(currentSubscription);
        }
예제 #3
0
        public static Plan ToPlan(this PlanApi planApi)
        {
            List <User> interestedUsers;

            try
            {
                interestedUsers = planApi.InterestedUsers.Select(u => new User(u)).ToList();
            }
            catch (ArgumentNullException)
            {
                interestedUsers = new List <User>();
            }
            if (string.IsNullOrEmpty(planApi.StartDate))
            {
                planApi.StartDate = "3000-01-01 00:00:00";
            }
            if (string.IsNullOrEmpty(planApi.EndDate))
            {
                planApi.EndDate = "3000-01-01 00:00:00";
            }
            return(new Plan
            {
                Id = planApi.Id,
                Name = planApi.Name,
                Type = new PlanType(planApi.Type),
                User = new User(planApi.User),
                Status = new PlanStatus(planApi.Status),
                StartDate = DateTime.Parse(planApi.StartDate),
                EndDate = DateTime.Parse(planApi.EndDate),
                Description = planApi.Description,
                Cost = planApi.Cost,
                InterestedUsers = interestedUsers
            });
        }
예제 #4
0
 public IActionResult Update([FromBody] PlanApi planApi)
 {
     try
     {
         if (ModelState.IsValid)
         {
             if (planApi.Id <= 0)
             {
                 return(BadRequest($"The plan's id is required or is invalid: {planApi.Id}"));
             }
             var convertedPlan = planApi.ToPlan();
             var updatedPlan   = ConnectionDB.PlansModule.DataPlan.Save(convertedPlan);
             if (updatedPlan != null)
             {
                 return(Ok());
             }
         }
         return(BadRequest());
     }
     catch (Exception e)
     {
         ErrorResponse errorResponse = ErrorResponse.From(e);
         return(StatusCode(500, errorResponse));
     }
 }
예제 #5
0
 public ActionResult Plan([FromBody] PlanApi PlanApi)
 {
     Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\n\r");
     if (PlanApi == null)
     {
         return(Json(new ResultsJson(new Message(CodeMessage.PostNull, "PostNull"), null)));
     }
     return(Json(Global.BUSS.BussResults(this, PlanApi)));
 }
예제 #6
0
        public async Task <ActionResult> Save(PlanApi planApi)
        {
            var api           = new PlanApiClient();
            var convertedPlan = planApi.ToPlan();
            await api.Save(convertedPlan);

            ViewBag.Plan = convertedPlan;
            return(View());
        }
예제 #7
0
        public async Task <PlanApi> Save(Plan plan)
        {
            string token = await new AuthApiClient().GetToken();

            _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
            PlanApi             planToApi = plan.ToPlanApi();
            HttpResponseMessage response;

            if (planToApi.Id == 0)
            {
                response = await _httpClient.PostAsJsonAsync <PlanApi>($"Plan", planToApi);
            }
            else
            {
                response = await _httpClient.PutAsJsonAsync <PlanApi>($"Plan", planToApi);
            }
            response.EnsureSuccessStatusCode();
            return(await response.Content.ReadAsAsync <PlanApi>());
        }
예제 #8
0
 public IActionResult Create([FromBody] PlanApi planApi)
 {
     try
     {
         if (ModelState.IsValid)
         {
             planApi.Id = 0;
             var convertedPlan = planApi.ToPlan();
             convertedPlan.InterestedUsers = planApi.InterestedUsers.Select(i => new User(i)).ToList();
             var createdPlan = ConnectionDB.PlansModule.DataPlan.Save(convertedPlan);
             if (createdPlan != null)
             {
                 var uri = Url.Action("Create", planApi.Id);
                 return(Created(uri, planApi));
             }
         }
         return(BadRequest(ErrorResponse.FromModelState(ModelState)));
     }
     catch (Exception e)
     {
         ErrorResponse errorResponse = ErrorResponse.From(e);
         return(StatusCode(500, errorResponse));
     }
 }
 public async Task FinalizeTests()
 {
     PlanApi.Dispose();
     SubscriptionApi.Dispose();
     CustomerApi.Dispose();
 }
예제 #10
0
 public void Init()
 {
     instance = new PlanApi();
 }