Ejemplo n.º 1
0
        // PUT api/Limits/5
        public async Task<IHttpActionResult> PutLimitModel(int id, LimitModel limitmodel)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != limitmodel.Id)
            {
                return BadRequest();
            }

            var limit = db.Limits.Find(id);
            await db.Entry(limit).Collection(i => i.Tags).LoadAsync();

            if (limit.UserId != User.Identity.GetUserId())
            {
                return BadRequest();
            }

            var tagIds = limitmodel.Tags.Select(i => i.Id);
            var currentTagIds = limit.Tags.Select(i => i.Id);
            var toAdd = tagIds.Where(i => !currentTagIds.Contains(i));

            limit.Tags.RemoveAll(i => !tagIds.Contains(i.Id));
            limit.Tags.AddRange(db.Tags.Where(i => toAdd.Contains(i.Id)).ToList());
            limit.Name = limitmodel.Name;
            limit.To = limitmodel.To;
            limit.From = limitmodel.From;
            limit.Amount = limitmodel.Amount;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!LimitModelExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return StatusCode(HttpStatusCode.NoContent);
        }
Ejemplo n.º 2
0
        public async Task<IHttpActionResult> PostLimitModel(LimitModel limitmodel)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
            var tagIds = limitmodel.Tags.Select(i => i.Id);

            limitmodel.UserId = User.Identity.GetUserId();
            limitmodel.Tags = await db.Tags.Where(i => tagIds.Contains(i.Id)).ToListAsync();

            db.Limits.Add(limitmodel);
            await db.SaveChangesAsync();

            return CreatedAtRoute("DefaultApi", new { id = limitmodel.Id }, limitmodel);
        }