//public UtilizeSubscriptionResponse UtilizeSubscription(UtilizeSubscriptionModel utilizeSubscriptionModel) public async Task <IHttpActionResult> UtilizeSubscription(UtilizeSubscriptionModel utilizeSubscriptionModel) { UtilizeSubscriptionDto utilizeSubscriptionResponse = new UtilizeSubscriptionDto(); try { //AccountService accountService = new AccountService(); //SubscriptionService subscriptionService = new SubscriptionService(); Account account = null; string email = ""; int cabOfficeId = 0; if (Request.Headers.Contains("CabOfficeEmail")) { IEnumerable <string> headerValues = Request.Headers.GetValues("CabOfficeEmail"); email = headerValues.FirstOrDefault(); } if (Request.Headers.Contains("CabOfficeId")) { IEnumerable <string> headerValues = Request.Headers.GetValues("CabOfficeId"); cabOfficeId = Convert.ToInt32(headerValues.FirstOrDefault()); } account = accountService.getCabOfficeByEmailAndCabOfficeId(email, cabOfficeId); if (account == null) { utilizeSubscriptionResponse.Result = false; utilizeSubscriptionResponse.IsSuccess = true; utilizeSubscriptionResponse.Error = Constant.APIError.AccountNotFound.ToString(); utilizeSubscriptionResponse.ErrorCode = (int)Constant.APIError.AccountNotFound; return(Ok(utilizeSubscriptionResponse)); } Subscription subscription = subscriptionService.GetSubscriptionBySubscriptionId(Convert.ToInt32(account.CurrentSubscriptionId)); if (subscription == null) { utilizeSubscriptionResponse.Result = false; utilizeSubscriptionResponse.IsSuccess = true; utilizeSubscriptionResponse.Error = Constant.APIError.NoSubscriptionFound.ToString(); utilizeSubscriptionResponse.ErrorCode = (int)Constant.APIError.NoSubscriptionFound; return(Ok(utilizeSubscriptionResponse)); } int subscriptionType = subscription.SubscriptionTypeId; if (subscriptionType == (int)Constant.SubscriptionType.Monthly) { if (subscription.EndDate < DateTime.Now) { utilizeSubscriptionResponse.Result = false; utilizeSubscriptionResponse.IsSuccess = true; utilizeSubscriptionResponse.Error = Constant.APIError.SubscriptionExpired.ToString(); utilizeSubscriptionResponse.ErrorCode = (int)Constant.APIError.SubscriptionExpired; return(Ok(utilizeSubscriptionResponse)); } if (utilizeSubscriptionModel.CreditUtilizationType == (int)Constant.CreditDeductionType.SMSCharges) { if (subscription.RemainingSmsCreditPurchase <= 0) { utilizeSubscriptionResponse.Result = false; utilizeSubscriptionResponse.IsSuccess = true; utilizeSubscriptionResponse.Error = Constant.APIError.NotEnoughMonthlySMSCredit.ToString(); utilizeSubscriptionResponse.ErrorCode = (int)Constant.APIError.NotEnoughMonthlySMSCredit; return(Ok(utilizeSubscriptionResponse)); } CreditDeductionType smsCreditDeduction = subscriptionService.GetCreditSMSDeductionDetail(); subscriptionService.UpdateSubscriptionRemainingMonthlySMSCredit(subscription.Id, smsCreditDeduction.Credit, (int)Constant.CreditDeductionType.SMSCharges); } } else { if (subscription.RemainingCredit <= 0) { utilizeSubscriptionResponse.Result = false; utilizeSubscriptionResponse.IsSuccess = true; utilizeSubscriptionResponse.Error = Constant.APIError.NotEnoughCredit.ToString(); utilizeSubscriptionResponse.ErrorCode = (int)Constant.APIError.NotEnoughCredit; return(Ok(utilizeSubscriptionResponse)); } if (utilizeSubscriptionModel.CreditUtilizationType == (int)Constant.CreditDeductionType.PerJobCharges) { CreditDeductionType jobCreditDeduction = subscriptionService.GetCreditJobDeductionDetail(); subscriptionService.UpdateSubscriptionCredit(subscription.Id, jobCreditDeduction.Credit, (int)Constant.CreditDeductionType.PerJobCharges); } else if (utilizeSubscriptionModel.CreditUtilizationType == (int)Constant.CreditDeductionType.SMSCharges) { CreditDeductionType smsCreditDeduction = subscriptionService.GetCreditSMSDeductionDetail(); subscriptionService.UpdateSubscriptionCredit(subscription.Id, smsCreditDeduction.Credit, (int)Constant.CreditDeductionType.SMSCharges); } } utilizeSubscriptionResponse.Error = ""; utilizeSubscriptionResponse.ErrorCode = 0; utilizeSubscriptionResponse.IsSuccess = true; utilizeSubscriptionResponse.Result = true; return(Ok(utilizeSubscriptionResponse)); } catch (Exception ex) { utilizeSubscriptionResponse.Error = ex.ToString(); utilizeSubscriptionResponse.ErrorCode = (int)Constant.APIError.Exception; utilizeSubscriptionResponse.IsSuccess = false; utilizeSubscriptionResponse.Result = false; return(Ok(utilizeSubscriptionResponse)); } }