/// <summary> /// Метод обработки запроса на обновление объекта недвижимости. /// </summary> /// <param name="id">Id обновляемого объекта недвижимости.</param> /// <param name="value">Обновленный объект недвижимости /// (в теле запроса).</param> /// <returns>Обновленный объект недвижимости.</returns> /// <remarks>Пример запроса: PUT api/realtyobjects/5 /// (в теле запроса - JSON-объект недвижимости).</remarks> public IRealtyObject Put(int id, [FromBody] JsonRealtyObject value) { value.Date = DateTime.Now; bool canUpdateRealtyObject = this.AuthorizationMechanism .CanUserUpdateRealtyObject(this.CurrentUserInfo, value); if (!canUpdateRealtyObject) { this.ThrowUnauthorizedResponseException( "Данному пользователю не разрешено изменять данный объект недвижимости."); } IRealtyObject updatedObj = this.realtyObjects.Update(value); this.realtyObjects.SaveChanges(); return(updatedObj); }
/// <summary> /// Метод обработки запроса на добавление объекта недвижимости. /// </summary> /// <param name="value">Новый объект недвижимости /// (в теле запроса).</param> /// <returns>Добавленный объект недвижимости.</returns> /// <remarks>Пример запроса: POST api/realtyobjects /// (в теле запроса - JSON-объект недвижимости).</remarks> public IRealtyObject Post([FromBody] JsonRealtyObject value) { value.Date = DateTime.Now; bool canAddRealtyObject = this.AuthorizationMechanism .CanUserAddRealtyObject(this.CurrentUserInfo, value); /* Тут, пожалуй, стоит кидать другую ошибку, а на клиент, наверно, отправлять 403. * Чтобы клиент мог отличать ошибку логина и пароля от нехватки прав. Так удобнее на клиенте. * Сейчас при возврате 401 он автоматом показывает форму залогиниться. */ if (!canAddRealtyObject) { this.ThrowUnauthorizedResponseException( "Данному пользователю не разрешено добавлять данный объект недвижимости."); } IRealtyObject newObj = this.realtyObjects.Add(value); this.realtyObjects.SaveChanges(); return(newObj); }