in src/AdminSite/Controllers/HomeController.cs [885:995]
public IActionResult FetchAllSubscriptions()
{
var currentUserId = this.userService.GetUserIdFromEmailAddress(this.CurrentUserEmailAddress);
try
{
this.subscriptionService = new SubscriptionService(this.subscriptionRepository, this.planRepository, currentUserId);
// Step 1: Get all subscriptions from the API
var subscriptions = this.fulfillApiService.GetAllSubscriptionAsync().GetAwaiter().GetResult();
foreach (SubscriptionResult subscription in subscriptions)
{
var customerUserId = 0;
var currentSubscription = this.subscriptionService.GetSubscriptionsBySubscriptionId(subscription.Id);
// Step 2: Check if they Exist in DB - Create if dont exist
if (currentSubscription.Name == null)
{
// Step 3: Add/Update the Offer
Guid OfferId = this.offersRepository.Add(new Offers()
{
OfferId = subscription.OfferId,
OfferName = subscription.OfferId,
UserId = currentUserId,
CreateDate = DateTime.Now,
OfferGuid = Guid.NewGuid(),
});
// Step 4: Add/Update the Plans. For Unsubscribed Only Add current plan from subscription information
if (subscription.SaasSubscriptionStatus == SubscriptionStatusEnum.Unsubscribed)
{
PlanDetailResultExtension planDetails = new PlanDetailResultExtension
{
PlanId = subscription.PlanId,
DisplayName = subscription.PlanId,
Description = "",
OfferId = OfferId,
PlanGUID = Guid.NewGuid(),
IsPerUserPlan = subscription.Quantity > 0,
};
this.subscriptionService.AddPlanDetailsForSubscription(planDetails);
}
else
{
var subscriptionPlanDetail = this.fulfillApiService.GetAllPlansForSubscriptionAsync(subscription.Id).ConfigureAwait(false).GetAwaiter().GetResult();
subscriptionPlanDetail.ForEach(x =>
{
x.OfferId = OfferId;
x.PlanGUID = Guid.NewGuid();
});
this.subscriptionService.AddUpdateAllPlanDetailsForSubscription(subscriptionPlanDetail);
}
// Step 5: Add/Update the current user from Subscription information
customerUserId = this.userService.AddUser(new PartnerDetailViewModel { FullName = subscription.Beneficiary.EmailId, EmailAddress = subscription.Beneficiary.EmailId });
}
// Step 6: Add Subscription
var subscriptionId = this.subscriptionService.AddOrUpdatePartnerSubscriptions(subscription, customerUserId);
// Step 7: Add Subscription Audit
if (currentSubscription != null && subscription.SaasSubscriptionStatus.ToString() != currentSubscription.SubscriptionStatus.ToString())
{
this.subscriptionLogRepository.Save(new SubscriptionAuditLogs()
{
Attribute = $"{Convert.ToString(SubscriptionLogAttributes.Status)}-Refresh",
SubscriptionId = subscriptionId,
NewValue = subscription.SaasSubscriptionStatus.ToString(),
OldValue = currentSubscription.SubscriptionStatus.ToString(),
CreateBy = currentUserId,
CreateDate = DateTime.Now
});
}
if (currentSubscription != null && subscription.PlanId != currentSubscription.PlanId)
{
this.subscriptionLogRepository.Save(new SubscriptionAuditLogs()
{
Attribute = $"{Convert.ToString(SubscriptionLogAttributes.Plan)}-Refresh",
SubscriptionId = subscriptionId,
NewValue = subscription.PlanId.ToString(),
OldValue = currentSubscription.PlanId,
CreateBy = currentUserId,
CreateDate = DateTime.Now
});
}
if (currentSubscription != null && subscription.Quantity != currentSubscription.Quantity)
{
this.subscriptionLogRepository.Save(new SubscriptionAuditLogs()
{
Attribute = $"{Convert.ToString(SubscriptionLogAttributes.Quantity)}-Refresh",
SubscriptionId = subscriptionId,
NewValue = subscription.Quantity.ToString(),
OldValue = currentSubscription.Quantity.ToString(),
CreateBy = currentUserId,
CreateDate = DateTime.Now
});
}
}
}
catch (Exception ex)
{
var errorMessage = $"Message: {ex.Message} ({ex.InnerException})";
this.logger.LogError(errorMessage);
applicationLogService.AddApplicationLog(errorMessage).GetAwaiter().GetResult();
return BadRequest();
}
return Ok();
}