public CSVResult UploadCSV(List <CSVFormDto> data)
        {
            var result = new CSVResult();

            var currencyCodes = data.Select(element => element.Code).ToList();
            var currencies    = _dbContext.Currencies.Where(entity => currencyCodes.Contains(entity.Code)).ToList();

            if (data.Count <= 0)
            {
                result.ErrorValidation();
            }

            var models = new List <IBCurrencyModel>();

            foreach (var datum in data)
            {
                var currency = currencies.FirstOrDefault(element => element.Code == datum.Code);
                if (currency != null)
                {
                    if (datum.GetYear() <= 0)
                    {
                        datum.ErrorMessage += "tahun tidak valid\n";
                        result.ErrorValidation();
                    }

                    if (datum.GetMonth() <= 0)
                    {
                        datum.ErrorMessage += "bulan tidak valid\n";
                        result.ErrorValidation();
                    }

                    if (datum.GetRate() <= 0)
                    {
                        datum.ErrorMessage += "rate harus lebih besar dari 0\n";
                        result.ErrorValidation();
                    }
                }
                else
                {
                    datum.ErrorMessage += "mata uang tidak valid atau belum terdaftar\n";
                    result.ErrorValidation();
                }
            }

            if (!result.IsAnyValidationError)
            {
                foreach (var datum in data)
                {
                    var currency = currencies.FirstOrDefault(element => element.Code == datum.Code);
                    var model    = new IBCurrencyModel(currency.Id, datum.GetYear(), datum.GetMonth(), datum.GetRate());
                    model.FlagForUpdate(_identityService.Username, UserAgent);
                    _dbContext.IBCurrencies.Add(model);
                }
                _dbContext.SaveChanges();
            }

            return(result);
        }
        public int Create(FormDto form)
        {
            if (_dbContext.IBCurrencies.Any(entity => entity.CurrencyId == form.CurrencyId && entity.Year == form.Year && entity.Month == form.Month))
            {
                var validationResult = new List <ValidationResult>
                {
                    new ValidationResult("Sudah Mata Uang dengan Tahun dan Bulan yang sama", new List <string>()
                    {
                        "Duplicate"
                    })
                };
                var validationContext = new ValidationContext(form, _serviceProvider, null);
                throw new ServiceValidationException(validationContext, validationResult);
            }

            var model = new IBCurrencyModel(form.CurrencyId, form.Year, form.Month, form.Rate);

            model.FlagForUpdate(_identityService.Username, UserAgent);
            _dbContext.IBCurrencies.Add(model);
            return(_dbContext.SaveChanges());
        }