public Task <object> RequestGiftCoinsReferralLink(GiftCoinsReferralLinkRequest request) { throw new NotImplementedException("Reserved for version 2"); //try //{ // return await _service.RequestGiftCoinsReferralLinkAsync(request); //} //catch (Exception ex) //{ // await _log.WriteErrorAsync(nameof(ReferralLinksClient), nameof(RequestGiftCoinsReferralLink), ex); // throw; //} }
/// <summary> /// Request money transfer referral link - reserved for version 2 /// </summary> /// <param name="request"></param> /// <returns></returns> //[HttpPost("giftCoinLinks")] - for v2 //[SwaggerOperation("RequestGiftCoinsReferralLink")] //[ProducesResponseType(typeof(ErrorResponseModel), (int)HttpStatusCode.BadRequest)] //[ProducesResponseType(typeof(ErrorResponseModel), (int)HttpStatusCode.NotFound)] //[ProducesResponseType(typeof(RequestRefLinkResponse), (int)HttpStatusCode.Created)] private async Task <IActionResult> RequestGiftCoinsReferralLink([FromBody] GiftCoinsReferralLinkRequest request) { if (request == null) { return(await LogAndReturnBadRequest("", ControllerContext, Phrases.InvalidRequest)); } if (request.Amount <= 0) { return(await LogAndReturnBadRequest(request, ControllerContext, Phrases.InvalidAmount)); } if (String.IsNullOrEmpty(request.SenderClientId)) { return(await LogAndReturnBadRequest(request, ControllerContext, Phrases.InvalidSenderClientId)); } var asset = (await _assets.GetDictionaryAsync()).Values.FirstOrDefault(v => v.Id == request.Asset); if (String.IsNullOrEmpty(request.Asset) || asset == null) { return(await LogAndReturnBadRequest(request, ControllerContext, Phrases.InvalidAsset)); } var clientBalances = await _balancesClient.GetClientBalances(request.SenderClientId); if (clientBalances == null) { return(await LogAndReturnNotFound(request, ControllerContext, $"Cant get clientBalance of asset {asset.Name} for client id {request.SenderClientId}.")); } var balance = clientBalances.FirstOrDefault(x => x.AssetId == asset.Id)?.Balance; if (!balance.HasValue || balance.Value < request.Amount) { return(await LogAndReturnBadRequest(request, ControllerContext, Phrases.InvalidTreesAmount)); } var referralLink = await _referralLinksService.CreateGiftCoinsLink(request); await LogInfo(request, ControllerContext, referralLink.ToJson()); return(Created(uri: $"api/referralLinks/{referralLink.Id}", value: new RequestRefLinkResponse { RefLinkId = referralLink.Id, RefLinkUrl = referralLink.Url })); }
public async Task <IReferralLink> CreateGiftCoinsLink(GiftCoinsReferralLinkRequest referralLinkRequest) { var entity = new ReferralLink { Id = Guid.NewGuid().ToString(), ExpirationDate = DateTime.UtcNow.AddDays(_settings.GiftCoinsLinkSettings.ExpirationDaysLimit) }; entity.Url = await _firebaseService.GenerateUrl(entity.Id); entity.SenderClientId = referralLinkRequest.SenderClientId; entity.Asset = referralLinkRequest.Asset; entity.Amount = referralLinkRequest.Amount; entity.Type = referralLinkRequest.Type.ToString(); entity.State = ReferralLinkState.Created.ToString(); return(await _referralLinkRepository.Create(entity)); }