public async Task <HttpResponseMessage> Add(string login, string key, AddCashFlowDto dto) { var uri = BaseUri.Append("add", login); var content = new StringContent(JsonConvert.SerializeObject(dto)); using (var httpClient = new HttpClient()) { httpClient.DefaultRequestHeaders.Add("x-functions-key", key); return(await httpClient.PostAsync(uri, content)); } }
private async void DodajParagonExecute() { var dto = new AddCashFlowDto() { Amount = new Money() { Amount = Ile, Currency = Wallets.First(x => x.Guid == Portfel).Money.Currency }, CategoryGuid = _kategorieNaSerwerze.First(x => x.Name == WybranaKategoria).Guid, DateTime = new DateTime(Rok, Miesiac, Dzien), Details = InneWydatkiNaListeDto(Wydatki), WalletGuid = Portfel }; await _repozytorium.CashFlowsRepository.Add(RegistryPomocnik.NazwaZalogowanegoUzytkownika, RegistryPomocnik.KluczUzytkownika, dto) .ContinueWith(task => { Application.Current.Dispatcher.Invoke(() => { if (task.Status == TaskStatus.RanToCompletion) { var result = task.Result; if (result != null && result.StatusCode == System.Net.HttpStatusCode.OK) { MessageBox.Show("dodało się"); } else { MessageBox.Show("błąd http"); } } else { MessageBox.Show("błąd taska"); } }); }); }
public static async Task <HttpResponseMessage> Run( [HttpTrigger( AuthorizationLevel.Function, "post", Route = "cashflows/add/{login}/") ] HttpRequestMessage req, string login, [Table("ExpensesApp")] ICollector <Cashflow> outTable, [Table("ExpensesApp", "user_{login}", "user_{login}")] UserLogInData user, [Queue("expenses-addcashflow")] CloudQueue queue, [Table("ExpensesApp")] CloudTable table, TraceWriter log) { AddCashFlowDto dto = null; try { log.Info($"json dto: " + req.Content); dto = await req.Content.ReadAsDeserializedJson <AddCashFlowDto>(); } catch { log.Info("AddCashFlow response: BadRequest - cannot read dto object"); return(req.CreateResponse( statusCode: HttpStatusCode.BadRequest, value: "Please pass a valid dto object in the request content")); } if (login == null) { log.Info("AddCashFlow response: BadRequest - login is null"); return(req.CreateResponse( statusCode: HttpStatusCode.BadRequest, value: "Please pass a login on the query string or in the request body")); } if (user == null) { log.Info($"AddCashFlow response: BadRequest - user does not exist"); return(req.CreateResponse( statusCode: HttpStatusCode.BadRequest, value: "User with given login does not exist" )); } var cashflowBase = new Cashflow() { DateTime = dto.DateTime, CategoryGuid = dto.CategoryGuid, Amount = JsonConvert.SerializeObject(dto.Amount), Details = JsonConvert.SerializeObject(dto.Details), WalletGuid = dto.WalletGuid }; var dateTimeInverted = RowKeyUtils.GetInvertedDateString(dto.DateTime); var guid = Guid.NewGuid(); if (user.BelongsToGroup) { var cashflowHousehold = new Cashflow(cashflowBase) { PartitionKey = user.HouseholdId, RowKey = $"householdCashflow_{dateTimeInverted}_{guid}" }; outTable.Add(cashflowHousehold); log.Info($"Added cashflowHousehold PK={cashflowHousehold.PartitionKey} RK={cashflowHousehold.RowKey}"); } var cashflowUser = new Cashflow(cashflowBase) { PartitionKey = user.HouseholdId, RowKey = $"userCashflow_{login}_{dateTimeInverted}_{guid}" }; outTable.Add(cashflowUser); log.Info($"Added cashflowHousehold PK={cashflowUser.PartitionKey} RK={cashflowUser.RowKey}"); //var cashflowHouseholdCategory = new Cashflow(cashflowBase) //{ // PartitionKey = user.HouseholdId, // RowKey = $"householdCategoryCashflow_{dto.CategoryGuid}_{dateTimeInverted}_{guid}" //}; //outTable.Add(cashflowHouseholdCategory); //log.Info($"Added cashflowHousehold PK={cashflowHouseholdCategory.PartitionKey} RK={cashflowHouseholdCategory.RowKey}"); //var cashflowUserCategory = new Cashflow(cashflowBase) //{ // PartitionKey = user.HouseholdId, // RowKey = $"userCategoryCashflow_{login}_{dto.CategoryGuid}_{dateTimeInverted}_{guid}" //}; //outTable.Add(cashflowUserCategory); //log.Info($"Added cashflowHousehold PK={cashflowUserCategory.PartitionKey} RK={cashflowUserCategory.RowKey}"); var addMessageDto = new AddMessageToAddCashflowQueueDto() { Amount = dto.Amount, HouseholdPk = user.HouseholdId, HouseholdRk = user.HouseholdId, WalletGuid = dto.WalletGuid, CategoryGuid = dto.CategoryGuid, UserBelongsToGroup = user.BelongsToGroup, Login = login }; if (user.BelongsToGroup) { var message = JsonConvert.SerializeObject(addMessageDto); await queue.AddMessageAsync(new CloudQueueMessage(message)); log.Info($"Enqueued message {message}"); } else { log.Info("User does not belong to a group. Only his wallet will be updated"); await UpdateUsersWallet(addMessageDto, table, log); } return(req.CreateResponse(HttpStatusCode.OK)); }