Example #1
0
        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());
        }
Example #2
0
        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());
        }