Ejemplo n.º 1
0
        public int CreateEntity(Post postToCreate)
        {
            using (var cmd = UnitOfWork.CreateCommand())
            {
                try
                {
                    cmd.CommandText = "CreatePost";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add(new SqlParameter("@BlogId", SqlDbType.Int)
                    {
                        Value = postToCreate.RelatedTo.Id
                    });
                    cmd.Parameters.Add(new SqlParameter("@PostTitle", SqlDbType.VarChar, 50)
                    {
                        Value = postToCreate.PostTitle
                    });
                    cmd.Parameters.Add(new SqlParameter("@PostContent", SqlDbType.Text)
                    {
                        Value = postToCreate.PostContent
                    });
                    cmd.Parameters.Add(new SqlParameter("@CreationDate", SqlDbType.DateTime)
                    {
                        Value = postToCreate.CreationDate
                    });
                    var outPutParameter = new SqlParameter("@CreatedPostId", SqlDbType.Int, 50,
                                                           ParameterDirection.InputOutput, false, 0, 0, "@CreatedPostId", DataRowVersion.Original, null);
                    outPutParameter.Value = ParameterDirection.InputOutput;
                    cmd.Parameters.Add(outPutParameter);

                    cmd.ExecuteNonQuery();

                    int createdPostId = Convert.ToInt32(outPutParameter.Value);
                    _postBuilder.SetPostId(postToCreate, createdPostId);

                    return(createdPostId);
                }
                catch (SqlException ex)
                {
                    throw new ApplicationException(ex.Message, ex);
                }
            }
        }
Ejemplo n.º 2
0
        public AnswerStatus UpdatePost(PostDto postDTO)
        {
            using (var uow = _unitOfWorkFactory.Create())
            {
                try
                {
                    var postToUpdate = _postBuilder.CreatePost(postDTO.PostTitle, postDTO.PostContent, postDTO.CreationDate);
                    _postBuilder.SetPostId(postToUpdate, postDTO.Id);

                    var postRepository = _repositoryFactory.CreatePostRepository(uow);
                    postRepository.UpdateEntity(postToUpdate);

                    var categoryRepository = _repositoryFactory.CreateCategoryRepository(uow);

                    var postCategories = categoryRepository.GetPostCategories(postDTO.Id);

                    int isEqual = 0;

                    var postCategoriesDto = new List <CategoryDto>();

                    var postCategoriesToAdd = new List <CategoryDto>();

                    if (postDTO.PostCategories != null)
                    {
                        postCategoriesDto = postDTO.PostCategories.ToList();

                        postCategoriesToAdd = postDTO.PostCategories.ToList();
                    }

                    foreach (var postCategory in postCategories)
                    {
                        isEqual = 0;
                        foreach (var categoryDto in postCategoriesDto)
                        {
                            if (categoryDto.Id == postCategory.Id)
                            {
                                postCategoriesToAdd.RemoveAll(c => c.Id == postCategory.Id);
                                isEqual = 1;
                            }
                        }

                        if (isEqual == 0)
                        {
                            postRepository.RemoveCategoryFromPost(postToUpdate, postCategory);
                        }
                    }

                    foreach (var categoryDTO in postCategoriesToAdd)
                    {
                        var categoryToAdd = categoryRepository.GetEntityById(categoryDTO.Id);
                        postRepository.AddCategoryToPost(postToUpdate, categoryToAdd);
                    }

                    uow.SaveChanges();

                    return(AnswerStatus.Successfull);
                }
                catch (Exception exc)
                {
                    _logger.Log(exc.ToString());

                    return(AnswerStatus.Failed);
                }
            }
        }