public async Task <IActionResult> UpdateProposedBack(int id, BackNotImageRequestModel backRqModel) { var userId = UserUtil.GetUserId(User); var admin = await userManager.GetAdmin(); var back = await repository.Back .QueryByBeingProposed(userId, admin.Id, id) .FirstOrDefaultAsync(); if (back == null) { return(NotFound()); } if (back.Approved) { return(Forbid()); } if (back.Image == null && (backRqModel.Meaning == null || backRqModel.Meaning.Length == 0)) { ModelState.AddModelError("", "Card must at least have either meaning or image."); return(BadRequest(ModelState)); } back.Type = backRqModel.Type == null || backRqModel.Type.Trim().Length == 0 ? null : backRqModel.Type.Trim().ToLower(); back.Meaning = backRqModel.Meaning == null || backRqModel.Meaning.Trim().Length == 0 ? null : backRqModel.Meaning.Trim(); back.Example = backRqModel.Example == null || backRqModel.Example.Trim().Length == 0 ? null : backRqModel.Example.Trim(); back.LastModifiedDate = DateTime.Now; await repository.SaveChangesAsync(); return(NoContent()); }
public async Task <IActionResult> Update(int id, BackNotImageRequestModel backRqModel) { var user = await userManager.GetUser(User); var back = await repository.Back .QueryById(user.Id, id) .FirstOrDefaultAsync(); if (back == null) { return(NotFound()); } var notChanged = true; notChanged = back.Meaning.ToLower() == backRqModel.Meaning.Trim().ToLower() && notChanged; notChanged = back.Type?.ToLower() == backRqModel.Type?.Trim().ToLower() && notChanged; notChanged = back.Example?.ToLower() == backRqModel.Example?.Trim().ToLower() && notChanged; back.Type = backRqModel.Type == null || backRqModel.Type.Trim().Length == 0 ? null : backRqModel.Type.Trim().ToLower(); back.Meaning = backRqModel.Meaning == null || backRqModel.Meaning.Trim().Length == 0 ? null : backRqModel.Meaning.Trim(); back.Example = backRqModel.Example == null || backRqModel.Example.Trim().Length == 0 ? null : backRqModel.Example.Trim(); back.LastModifiedDate = DateTime.Now; var decks = await repository.Deck .QueryByCardId(back.CardId) .ToListAsync(); var userIsAdmin = await userManager.CheckAdminRole(user); foreach (var deck in decks) { deck.Approved = deck.Approved && (userIsAdmin || notChanged); } await repository.SaveChangesAsync(); return(NoContent()); }