public async Task Create() { CreateBonusCardApiModel createBonusCardApiModel = new CreateBonusCardApiModel(); createBonusCardApiModel.FirstName = _firstName; createBonusCardApiModel.LastName = _lastName; createBonusCardApiModel.PhoneNumber = _phoneNumber; try { //ErrorMessage = ""; FullInfoBonusCardModel fullinfo = await _apiHelper.CreateBonusCard(createBonusCardApiModel); await _events.PublishOnUIThreadAsync(new FindCardEvent(fullinfo)); } catch (Exception) { // ErrorMessage = ex.Message; } }
public async Task <FullInfoBonusCardModel> CreateBonusCard(CreateBonusCardApiModel createBonusCard) { using (HttpResponseMessage response = await apiClient.PostAsJsonAsync(ApiRoutes.CreateCard, createBonusCard).ConfigureAwait(false)) { var result = await response.Content.ReadAsAsync <FullInfoBonusCard>(); if (response.IsSuccessStatusCode && result.ErrorMessage == null) { _fullInfoBonusCardModel.CardNumber = result.CardNumber; _fullInfoBonusCardModel.Balance = result.Balance; _fullInfoBonusCardModel.ExpirationDate = result.ExpirationDate; _fullInfoBonusCardModel.FirstName = result.FirstName; _fullInfoBonusCardModel.LastName = result.LastName; _fullInfoBonusCardModel.PhoneNumber = result.PhoneNumber; return(_fullInfoBonusCardModel); } else { throw new Exception(response.ReasonPhrase); } } }
public async Task <FullInfoBonusCard> CreateBonusCard([FromBody] CreateBonusCardApiModel createCard) { // The message when we fail to login var invalidErrorMessage = "Please provide all required details to register for an account"; // The error response for a failed login var errorResponse = new FullInfoBonusCard { // Set error message ErrorMessage = invalidErrorMessage }; // If we have no credentials... if (createCard == null) { return(errorResponse); } // Check if we have both a first and last name var firstOrLastNameMissing = string.IsNullOrEmpty(createCard?.FirstName) || string.IsNullOrEmpty(createCard?.LastName); // Check if enough details are provided for creating var notEnoughSearchDetails = // First and last name firstOrLastNameMissing && // Phone number string.IsNullOrEmpty(createCard?.PhoneNumber); // If we don't have enough details if (notEnoughSearchDetails) { return new FullInfoBonusCard { ErrorMessage = "Please provide a first and last name or phone number" } } ; // Create the desired client from the given details var newClient = new Client { // ClientId = (Context.Clients.Max(e => e.ClientId) + 1), FirstName = createCard.FirstName, LastName = createCard.LastName, PhoneNumber = createCard.PhoneNumber }; DateTime initialDate = DateTime.Today.AddYears(1); decimal initialBalance = 0; Random generator = new Random(); string initialCardNumber; do { var randomNum = generator.Next(1, 1000000); initialCardNumber = Math.Abs((305914 * (randomNum - 100000) + 151647) % 999983).ToString(); } while (Context.Clients.Any(x => x.BonusCard.CardNumber == initialCardNumber)); Context.BonusCards.Add(new BonusCard { CardNumber = initialCardNumber, Balance = initialBalance, ExpirationDate = initialDate, Client = newClient }); await Context.SaveChangesAsync(); return(new FullInfoBonusCard() { CardNumber = initialCardNumber, Balance = initialBalance, ExpirationDate = initialDate, FirstName = createCard.FirstName, LastName = createCard.LastName, PhoneNumber = createCard.PhoneNumber }); }