예제 #1
0
        private async Task <AnualBalance> CreateBalances(AnualBalance entity)
        {
            try
            {
                var newBalances = new List <Balance>();
                foreach (var monthValue in Enum.GetValues(typeof(EMonth)))
                {
                    newBalances.Add(new Balance()
                    {
                        AnualBalanceId = entity.Id, Month = (EMonth)monthValue, Positive = true
                    });
                }

                await _context.Balances.AddRangeAsync(newBalances);

                _context.Entry(entity).State = EntityState.Modified;
                entity.Balances = newBalances;

                await _context.SaveChangesAsync();

                return(entity);
            }
            catch (Exception ex)
            {
                var logger = _loggerFactory.CreateLogger <DataContext>();
                logger.LogError(ex.Message);
                return(null);
            }
        }
예제 #2
0
        public async Task <AnualBalance> CalculateAndSaveYear(AnualBalance anualBalance)
        {
            try
            {
                anualBalance.AnualBalanceResult = 0;

                List <Balance> balances = await GetBalancesFromYear(anualBalance.Id);

                foreach (Balance balance in balances)
                {
                    anualBalance.AnualBalanceResult += balance.BalanceResult;
                }

                anualBalance.Positive = (anualBalance.AnualBalanceResult >= 0) ? true : false;

                _context.Update(anualBalance);
                await _context.SaveChangesAsync();

                return(anualBalance);
            }
            catch (Exception)
            {
                return(null);
            }
        }
예제 #3
0
        public async Task <AnualBalance> Add(AnualBalance anualBalance, int userId)
        {
            try
            {
                //Validates model.
                if (anualBalance == null)
                {
                    return(null);
                }

                //Assign the validated user id to the Anual Balance
                anualBalance.UserId = userId;

                if (!await UniqueYear(userId, anualBalance.Year))
                {
                    return(null);
                }

                //Initialize the anual balance result.
                anualBalance.Result   = 0;
                anualBalance.Positive = true;

                await _context.AddAsync(anualBalance);

                await _context.SaveChangesAsync();

                return(anualBalance);
            }
            catch (Exception)
            {
                return(null);
            }
        }
예제 #4
0
        public async Task <bool> UniqueMonthValidation(Balance newBalance)
        {
            try
            {
                AnualBalance anualBalance = await _context.AnualBalances
                                            .Include(b => b.Balances)
                                            .ThenInclude(m => m.Month)
                                            .Where(a => a.Id == newBalance.AnualBalanceId)
                                            .FirstOrDefaultAsync();

                if (anualBalance != null)
                {
                    foreach (Balance _bal in anualBalance.Balances)
                    {
                        if (_bal.Month.Id == newBalance.MonthId)
                        {
                            return(false);
                        }
                    }

                    return(true);
                }

                return(false);
            }
            catch (Exception)
            {
                throw new Exception("Internal Error UniqueMonthValidation");
            }
        }
예제 #5
0
        public async Task <AnualBalance> CalculateResult(AnualBalance entity)
        {
            try
            {
                if (entity == null)
                {
                    return(null);
                }

                _context.Entry(entity).State = EntityState.Modified;

                double total = 0;

                entity.Balances.ForEach(b => total += b.Result);

                entity.Result   = total;
                entity.Positive = entity.Result >= 0;

                await _context.SaveChangesAsync();

                return(entity);
            }
            catch (Exception ex)
            {
                var logger = _loggerFactory.CreateLogger <DataContext>();
                logger.LogError(ex.Message);
                return(null);
            }
        }
예제 #6
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,Year,AnualBalanceResult")] AnualBalance anualBalance)
        {
            if (id != anualBalance.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    await _repository.Update(anualBalance);
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!_repository.AnualBalanceExists(anualBalance.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(anualBalance));
        }
예제 #7
0
        public async Task <IActionResult> PutAnualBalance(int id, AnualBalance anualBalance)
        {
            try
            {
                if (id != anualBalance.Id)
                {
                    return(BadRequest());
                }

                if (await _repository.Update(anualBalance) == null)
                {
                    return(BadRequest());
                }

                return(NoContent());
            }
            catch (Exception)
            {
                if (!_repository.Exist(id))
                {
                    return(NotFound());
                }
                else
                {
                    return(BadRequest());
                }
            }
        }
예제 #8
0
        public async Task <IActionResult> Create([Bind("Id,Year,AnualBalanceResult")] AnualBalance anualBalance)
        {
            if (ModelState.IsValid)
            {
                await _repository.Add(anualBalance);

                return(RedirectToAction(nameof(Index)));
            }
            return(View(anualBalance));
        }
예제 #9
0
        public async Task <AnualBalance> Update(AnualBalance entity)
        {
            try
            {
                _context.Update(entity);
                await _context.SaveChangesAsync();

                return(entity);
            }
            catch (Exception)
            {
                return(null);
            }
        }
예제 #10
0
        public async Task <ActionResult <AnualBalance> > PostAnualBalance(AnualBalance anualBalance)
        {
            if (anualBalance == null || !_anualBalanceRepository.AvailableAnualBalance(anualBalance.Year))
            {
                return(BadRequest(new ApiResponse(400)));
            }

            var result = await _anualBalanceRepository.AddAsync(anualBalance);

            if (result == null)
            {
                return(BadRequest(new ApiResponse(400)));
            }

            return(CreatedAtAction("GetAnualBalance", new { id = result.Id }, result));
        }
예제 #11
0
        private async Task <AnualBalance> CreateAnualBalance(AnualBalance entity)
        {
            try
            {
                await _context.AnualBalances.AddAsync(entity);

                await _context.SaveChangesAsync();

                return(entity);
            }
            catch (Exception ex)
            {
                var logger = _loggerFactory.CreateLogger <DataContext>();
                logger.LogError(ex.Message);
                return(null);
            }
        }
예제 #12
0
        public async Task <AnualBalance> Update(AnualBalance entity)
        {
            try
            {
                if (entity == null)
                {
                    return(null);
                }

                _context.Entry(entity).State = EntityState.Modified;

                await _context.SaveChangesAsync();

                return(entity);
            }
            catch (Exception)
            {
                return(null);
            }
        }
예제 #13
0
        public async Task <ActionResult <AnualBalance> > PostAnualBalance(AnualBalance entity)
        {
            var user = await _repository.ValidUser(GetTokenUserId());

            if (user == null)
            {
                return(NotFound());
            }

            var anualBalance = await _repository.Add(entity, user.Id);

            if (anualBalance == null)
            {
                return(BadRequest());
            }

            await _repository.AddMonths(anualBalance.Id, user.Id);

            return(Created("POST", anualBalance));
        }
예제 #14
0
        public async Task <AnualBalance> Add(AnualBalance entity)
        {
            try
            {
                if (entity != null)
                {
                    entity.AnualBalanceResult = 0;

                    _context.Add(entity);
                    await _context.SaveChangesAsync();

                    return(entity);
                }

                return(null);
            }
            catch (Exception)
            {
                return(null);
            }
        }
예제 #15
0
        public async Task <AnualBalance> Delete(int id)
        {
            try
            {
                AnualBalance anualBalanaceToRemove = await Get(id);

                if (anualBalanaceToRemove.Balances.Count > 0)
                {
                    return(null);
                }

                _context.AnualBalances.Remove(anualBalanaceToRemove);
                await _context.SaveChangesAsync();

                return(anualBalanaceToRemove);
            }
            catch (Exception)
            {
                return(null);
            }
        }
예제 #16
0
        public async Task <AnualBalance> AddAsync(AnualBalance entity)
        {
            try
            {
                var result = await CreateAnualBalance(entity);

                if (result == null)
                {
                    throw new Exception();
                }

                result = await CreateBalances(entity);

                return(entity);
            }
            catch (Exception ex)
            {
                var logger = _loggerFactory.CreateLogger <DataContext>();
                logger.LogError(ex.Message);
                return(null);
            }
        }
예제 #17
0
 public async Task <AnualBalance> UpdateAsync(AnualBalance entity)
 {
     throw new NotImplementedException();
 }
예제 #18
0
 public async Task <IActionResult> UpdateAnualBalance(int id, AnualBalance anualBalance)
 {
     return(BadRequest(new ApiResponse(405, "Method not implemented")));
 }