Esempio n. 1
0
        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));
        }
Esempio n. 4
0
        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);
            }
        }