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)); }
/// <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))); }