Example #1
0
 public BaseResponse <CategoryResponse> CreateCategory([FromBody] CategoryCreationRequest request, [FromHeader] Guid UserID)
 {
     return(BaseResponse <CategoryResponse> .ConstructResponse(
                HttpStatusCode.OK,
                HttpStatusCode.OK.ToString(),
                categoryService.CreateCategory(request, UserID)));
 }
        public CategoryResponse CreateCategory(CategoryCreationRequest request, Guid UserID)
        {
            using (IDbContextTransaction transaction = dbContext.Database.BeginTransaction())
            {
                try
                {
                    Categories category = dbContext.Categories
                                          .Where(c => c.Name.Equals(request.Name) && c.CreatorUserId.Equals(UserID)).FirstOrDefault();
                    Users user = dbContext.Users.Find(UserID);

                    if (category != null)
                    {
                        throw new BusinessLogicException(HttpStatusCode.BadRequest, ResponseCode.DATA_ALREADY_EXIST.ToString());
                    }
                    if (user == null)
                    {
                        throw new BusinessLogicException(HttpStatusCode.BadRequest, ResponseCode.USER_NOT_EXIST.ToString());
                    }

                    Categories createdCategory = new Categories();

                    createdCategory.Name          = request.Name;
                    createdCategory.CreatorUserId = UserID;
                    createdCategory.CreatedDate   = DateTime.Now;
                    createdCategory.CreatedBy     = user.Email;
                    createdCategory.UpdatedDate   = DateTime.Now;
                    createdCategory.UpdatedBy     = user.Email;

                    dbContext.Categories.Add(createdCategory);
                    dbContext.SaveChanges();
                    transaction.Commit();

                    CategoryResponse response = new CategoryResponse();
                    response.CategoryId = createdCategory.CategoryId;
                    response.Name       = createdCategory.Name;
                    return(response);
                }
                catch (BusinessLogicException e)
                {
                    transaction.Rollback();
                    throw e;
                }
                catch
                {
                    transaction.Rollback();
                    throw new BusinessLogicException(HttpStatusCode.InternalServerError, ResponseCode.FAILED_TO_CREATED_DATA.ToString());
                }
            }
        }