Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }