public async Task <ActionResponse> AddAsync(ManualRateModel model) { using (var unitWork = new UnitOfWork(context)) { ActionResponse response = new ActionResponse(); var manualRate = await unitWork.ManualRatesRepository.GetOneAsync(r => r.Year == model.Year && r.Currency == model.Currency); if (manualRate != null) { manualRate.ExchangeRate = model.ExchangeRate; manualRate.IsEditedByUser = true; unitWork.ManualRatesRepository.Update(manualRate); } else { unitWork.ManualRatesRepository.Insert(new EFManualExchangeRates() { Currency = model.Currency, DefaultCurrency = model.DefaultCurrency, Year = model.Year, ExchangeRate = model.ExchangeRate, IsEditedByUser = true }); } try { var strategy = context.Database.CreateExecutionStrategy(); await strategy.ExecuteAsync(async() => { using (var transaction = context.Database.BeginTransaction()) { await unitWork.SaveAsync(); var projectsInYear = unitWork.ProjectRepository.GetManyQueryable(p => p.StartDate.Year == model.Year && p.ProjectCurrency == model.Currency); foreach (var project in projectsInYear) { project.ExchangeRate = model.ExchangeRate; unitWork.ProjectRepository.Update(project); } await unitWork.SaveAsync(); transaction.Commit(); } }); } catch (Exception ex) { response.Message = ex.Message; response.Success = false; } return(response); } }
public IActionResult Put(int id, [FromBody] ManualRateModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var response = service.Update(id, model); if (!response.Success) { return(BadRequest(response.Message)); } return(Ok(true)); }
public async Task <IActionResult> Post([FromBody] ManualRateModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var response = await service.AddAsync(model); if (!response.Success) { return(BadRequest(response.Message)); } return(Ok(true)); }
public ActionResponse Update(int id, ManualRateModel model) { using (var unitWork = new UnitOfWork(context)) { ActionResponse response = new ActionResponse(); IMessageHelper mHelper; var manualRate = unitWork.ManualRatesRepository.GetOne(r => r.Id == id); if (manualRate == null) { mHelper = new MessageHelper(); response.Success = false; response.Message = mHelper.GetNotFound("Manual exchange rate"); return(response); } if (manualRate != null) { manualRate.ExchangeRate = model.ExchangeRate; manualRate.Currency = model.Currency; manualRate.DefaultCurrency = model.DefaultCurrency; manualRate.IsEditedByUser = true; unitWork.ManualRatesRepository.Update(manualRate); } try { unitWork.Save(); } catch (Exception ex) { response.Message = ex.Message; response.Success = false; } return(response); } }