public async Task AddRating(long id, RatePriceSubmissionModel model) { var priceSubmission = await dbContext.PriceSubmissions.GetAsync(id); var rating = new Entities.PriceSubmissionRating( priceSubmissionId: priceSubmission.Id, userId: userContext.Id.Value, value: model.Value, submitedAt: DateTime.Now); await dbContext.UpsertAsync(new[] { rating }, options => options .SelectValues(x => new object[] { (int)x.Value, x.PriceSubmissionId, $"'{x.SubmitedAt.ToString(CultureInfo.InvariantCulture)}'", x.UserId }) .WithColumns( x => x.Value, x => x.PriceSubmissionId, x => x.SubmitedAt, x => x.UserId ) .ConflictOn( x => x.UserId, x => x.PriceSubmissionId )); }
public async Task UpdateWholesalePrices() { IReadOnlyCollection <FuelTypePrice> prices = null; try { prices = await priceProvider.GetPrices(); } catch (Exception ex) { throw new Exception("Failed to fetch prices from Lotos website", ex); } if (!prices.Any()) { throw new Exception("Failed to fetch prices from Lotos website"); } var modifiedAt = DateTime.UtcNow; var wholesalePrices = prices.Select(x => new FranchiseWholesalePrice( franchiseId: franchiseId, fuelType: x.FuelType, amount: x.Amount, modifiedAt: modifiedAt)); await dbContext.UpsertAsync(wholesalePrices, options => options .WithColumns( x => x.Amount, x => x.FranchiseId, x => x.FuelType, x => x.ModifiedAt) .ConflictOn( x => x.FranchiseId, x => x.FuelType) .SelectValues(p => new object[] { p.Amount.ToString(CultureInfo.InvariantCulture), p.FranchiseId, (int)p.FuelType, $"'{ p.ModifiedAt.ToString(CultureInfo.InvariantCulture) }'" })); }