Exemple #1
0
        public async Task <IActionResult> Edit(long id, [Bind("RequestId,RequestDescription,RequestAmount,BuyerId,ManagerId,FinanceId,RequestStatusId,Created,Updated")] Request request)
        {
            if (id != request.RequestId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(request);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!RequestExists(request.RequestId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["RequestStatusId"] = new SelectList(_context.RequestStatus, "RequestStatusId", "RequestStatusId", request.RequestStatusId);
            return(View(request));
        }
Exemple #2
0
        /// <summary>
        /// Aprovacion de solicitud
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <IActionResult> Approve(long?id)
        {
            var request = await _context.Request.FindAsync(id);

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

            try
            {
                _currentUser = await _userManager.GetUserAsync(HttpContext.User);

                request.RequestStatus = null;
                if (await _userManager.IsInRoleAsync(_currentUser, "Manager"))
                {
                    request.ManagerId       = _currentUser.Id;
                    request.RequestStatusId = 3;

                    //Asignacion de finanzas segun el monto
                    var roles = _roleManager.Roles.ToList();

                    foreach (var role in roles)
                    {
                        if (request.RequestAmount >= role.MinAmout && request.RequestAmount <= role.MaxAmount)
                        {
                            var usersInRole = await _userManager.GetUsersInRoleAsync(role.Name);

                            //Elije un usuario de finanzas al azar
                            Random r    = new Random();
                            int    rInt = r.Next(0, usersInRole.Count); //for ints

                            var finUser = usersInRole[rInt];

                            request.FinanceId = finUser.Id;
                        }
                    }
                }
                else // Todos los roles de finance
                {
                    request.RequestStatusId = 5;
                }

                request.Updated = DateTime.Now;
                _context.Update(request);
                await _context.SaveChangesAsync();
                await SendEmail(request);
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RequestExists(request.RequestId))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            TempData["LastActionResult"] = "Request Approved";
            return(RedirectToAction(nameof(Index)));
        }