Exemple #1
0
        // PUT: /ExerciseItemAnswers/5
        /// <summary>
        /// Support for updating exercise item answer
        /// </summary>
        public async Task <IActionResult> Put([FromODataUri] int key, [FromBody] ExerciseItemAnswer update)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (key != update.ID)
            {
                return(BadRequest());
            }

            _context.Entry(update).State = EntityState.Modified;
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!_context.ExerciseItemAnswers.Any(p => p.ID == key))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(Updated(update));
        }
Exemple #2
0
        // PUT: /KnowledgeItems(5)
        /// <summary>
        /// Support for updating Knowledge items
        /// </summary>
        public async Task <IActionResult> Put([FromODataUri] int key, [FromBody] KnowledgeItem update)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (key != update.ID)
            {
                return(NotFound());
            }

            String usrId = ControllerUtil.GetUserID(this);

            if (String.IsNullOrEmpty(usrId))
            {
                return(new UnauthorizedResult());
            }

            var isexist = await _context.KnowledgeItems.Where(p => p.ID == key).CountAsync();

            if (isexist <= 0)
            {
                return(NotFound());
            }

            update.ModifiedAt            = DateTime.Now;
            _context.Entry(update).State = EntityState.Modified;

            //knowitem.UpdateData(update);
            var tagsindb = _context.KnowledgeTags.Where(p => p.RefID == update.ID).AsNoTracking().ToList();

            foreach (var ditem in update.Tags)
            {
                var itemindb = tagsindb.Find(p => p.TagTerm == ditem.TagTerm);
                if (itemindb == null)
                {
                    _context.KnowledgeTags.Add(ditem);
                }
            }
            foreach (var ditem in tagsindb)
            {
                var nitem = update.Tags.FirstOrDefault(p => p.TagTerm == ditem.TagTerm);
                if (nitem == null)
                {
                    _context.KnowledgeTags.Remove(ditem);
                }
            }

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                throw;
            }

            return(Updated(update));
        }
Exemple #3
0
        // PUT: /UserCollections(5)
        /// <summary>
        /// Support for updating user collection
        /// </summary>
        public async Task <IActionResult> Put([FromODataUri] int key, [FromBody] UserCollection update)
        {
            if (!ModelState.IsValid)
            {
                foreach (var value in ModelState.Values)
                {
                    foreach (var err in value.Errors)
                    {
                        System.Diagnostics.Debug.WriteLine(err.Exception?.Message);
                    }
                }

                return(BadRequest(ModelState));
            }

            if (key != update.ID)
            {
                return(BadRequest("Invalid key"));
            }

            String usrId = ControllerUtil.GetUserID(this);

            if (String.IsNullOrEmpty(usrId) || update.User != usrId)
            {
                return(new UnauthorizedResult());
            }

            // Check existes
            var isexist = await _context.UserCollections.AsNoTracking().Where(p => p.ID == key).CountAsync();

            if (isexist <= 0)
            {
                return(NotFound());
            }

            update.ModifiedAt            = DateTime.Now;
            _context.Entry(update).State = EntityState.Modified;

            // Items
            var itemsindb = _context.UserCollectionItems.AsNoTracking().Where(p => p.ID == update.ID).ToList();

            foreach (var ditem in update.Items)
            {
                var itemindb = itemsindb.Find(p => p.RefType == ditem.RefType && p.RefID == ditem.RefID);
                if (itemindb == null)
                {
                    _context.UserCollectionItems.Add(ditem);
                }
            }
            foreach (var ditem2 in itemsindb)
            {
                var nitem = update.Items.FirstOrDefault(p => p.RefType == ditem2.RefType && p.RefID == ditem2.RefID);
                if (nitem == null)
                {
                    _context.UserCollectionItems.Remove(ditem2);
                }
            }

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                throw;
            }

            return(Ok(update));
        }
Exemple #4
0
        // PUT: /ExerciseItems/5
        /// <summary>
        /// Support for updating exercise items
        /// </summary>
        public async Task <IActionResult> Put([FromODataUri] int key, [FromBody] ExerciseItem update)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (key != update.ID)
            {
                return(BadRequest("Key is not matched"));
            }

            String usrId = ControllerUtil.GetUserID(this);

            if (String.IsNullOrEmpty(usrId))
            {
                return(new UnauthorizedResult());
            }

            var isexist = await _context.ExerciseItems.Where(p => p.ID == key).CountAsync();

            if (isexist <= 0)
            {
                return(NotFound());
            }

            // Update itself
            update.ModifiedAt            = DateTime.Now;
            _context.Entry(update).State = EntityState.Modified;

            // Tags
            var tagsindb = _context.ExerciseTags.Where(p => p.RefID == update.ID).AsNoTracking().ToList();

            foreach (var ditem in update.Tags)
            {
                var itemindb = tagsindb.Find(p => p.TagTerm == ditem.TagTerm);
                if (itemindb == null)
                {
                    _context.ExerciseTags.Add(ditem);
                }
            }
            foreach (var ditem in tagsindb)
            {
                var nitem = update.Tags.FirstOrDefault(p => p.TagTerm == ditem.TagTerm);
                if (nitem == null)
                {
                    _context.ExerciseTags.Remove(ditem);
                }
            }

            // Answer
            var answerindb = _context.ExerciseItemAnswers.Where(p => p.ID == update.ID).AsNoTracking().FirstOrDefault();

            if (answerindb == null)
            {
                // Not exist
                if (update.Answer != null)
                {
                    // Insert
                    _context.ExerciseItemAnswers.Add(update.Answer);
                }
            }
            else
            {
                // Already in DB
                if (update.Answer != null)
                {
                    // Insert
                    _context.Entry(update.Answer).State = EntityState.Modified;
                }
                else
                {
                    _context.ExerciseItemAnswers.Remove(answerindb);
                }
            }

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                throw;
            }

            return(Updated(update));
        }