public async Task <Xpto> InserValues() { var xptoEntity = await repository.GetAll().FirstOrDefaultAsync(); if (xptoEntity == null) { xptoEntity = new Xpto(); await repository.CreateAsync(xptoEntity); await repository.CommitAsync(); } xptoEntity = await UpdateValues(xptoEntity, "TotalProduced", "produced", "vol_produced"); xptoEntity = await UpdateValues(xptoEntity, "TotalPlanned", "planned", "vol_planned"); repository.Update(xptoEntity); try { await repository.CommitAsync(); } catch (Exception e) { Console.WriteLine(e.Message); } return(await Task.FromResult(xptoEntity)); }
private async Task <Xpto> UpdateValues(Xpto xptoEntity, string propriedade, string paramQuery, string column) { using (NpgsqlConnection conexao = new NpgsqlConnection(config.GetConnectionString("DefaultConnection"))) { conexao.Open(); for (int i = 1; i <= 11; i++) { var propertyName = $"{propriedade}{i}"; var query = $"SELECT SUM({paramQuery}{i}) FROM xpto.{column}"; var somaQuery = await conexao.QueryFirstOrDefaultAsync <dynamic>(query); var prop = xptoEntity.GetType().GetProperty(propertyName, BindingFlags.Public | BindingFlags.Instance); if (null != prop && prop.CanWrite) { prop.SetValue(xptoEntity, somaQuery.sum, null); } } } return(await Task.FromResult(xptoEntity)); }