Пример #1
0
        /// <summary>
        /// Update an User with Patch Document
        /// </summary>
        /// <param name="patchMovie">Patch document</param>
        /// <param name="idMovie">id Movie</param>
        /// <param name="idUser">id User</param>
        /// <returns>Result</returns>
        public async Task <BLResult <Movie> > PatchMovie(JsonPatchDocument <Movie> patchMovie, int idMovie, int idUser)
        {
            DBResult <Movie>         dbResult;
            DBResult <AuditMovieLog> dbResultAudit;
            BLResult <Movie>         result = new BLResult <Movie>();

            // Validating input data
            if (patchMovie == null)
            {
                result.Message = "Invalid data";
                return(result);
            }

            // Validating allowed operations
            var op = patchMovie.Operations.Where(o => o.path.Equals("/Image") || o.path.Equals("/LikesCounter")).Count();

            if (op > 0)
            {
                result.Message = "Patch operation not allowed";
                return(result);
            }

            // Patchin user
            dbResult = await movieDataAccess.PatchMovie(patchMovie, idMovie);

            if (dbResult.Success)
            {
                result.Success = true;
                result.Item    = dbResult.Item;

                // Adding Audit Log
                dbResultAudit = movieDataAccess.AddAuditLog(dbResult.Item, idUser);
                if (!dbResult.Success)
                {
                    // Only return message
                    result.Message = dbResultAudit.Message;
                }
            }
            else
            {
                result.Message = dbResult.Message;
            }

            return(result);
        }