コード例 #1
0
        /// <summary>
        /// Updates an announcement using details in the given model
        /// </summary>
        /// <param name="uam">Model containing details of the announcement to update</param>
        public async Task UpdateAnnouncement(UpdateAnnouncementModel uam)
        {
            var announcement = await _db.Announcements.FindAsync(uam.Id);
            if(announcement == null)
            {
                throw new Exception("No announcement with id: " + uam.Id);
            }

            announcement.Title = uam.Title;
            announcement.Description = uam.Description;
            _db.Entry(announcement).State = EntityState.Modified;

            try
            {
                await _db.SaveChangesAsync();
            }
            catch(DbUpdateConcurrencyException)
            {
                // Deleted before update maybe?
                if(!AnnouncementExists(announcement.Id))
                {
                    throw new Exception("No announcement with id: " + uam.Id);
                }
            }
        }
コード例 #2
0
        public async Task<IHttpActionResult> PutAnnouncement(UpdateAnnouncementModel uam)
        {
            if(!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            try
            {
                await _announcementManager.UpdateAnnouncement(uam);
            }
            catch(Exception ex)
            {
                throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, ex.Message));
            }

            return StatusCode(HttpStatusCode.NoContent);
        }