// POST api/categories public ExpenceCategoryDTO Post(CreateCategoryDTO dto) { if (ModelState.IsValid) { var userId = _usersService.GetCurrentUserId(); var resultDto = _categoriesService.Create(userId, dto); return resultDto; } else { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } }
public ExpenceCategoryDTO Create(int userId, CreateCategoryDTO dto) { #region Validate if (dto == null) { throw new ArgumentNullException("dto"); } if (string.IsNullOrWhiteSpace(dto.Name)) { throw new InvalidInputException("Category name is required."); } var user = _userRepo.All(UserSpecifications.ById(userId)).FirstOrDefault(); if (user == null) { throw new ItemNotFoundException(string.Format("User with id \"{0}\" not found.", userId)); } var existingCategory = _categoryRepo.All(ExpenceCategorySpecifications.ByName(dto.Name)).FirstOrDefault(); if (existingCategory != null) { throw new ItemAlreadyExistException(string.Format("Category with name \'" + dto.Name + "\' already exist")); } #endregion var category = new ExpenceCategory() { Name = dto.Name.Trim() }; user.ExpenceCategories.Add(category); _uow.Commit(); _tagManager.TouchTag("category", "create", category.UserId); return new ExpenceCategoryDTO { Id = category.ExpenceCategoryId, Name = category.Name }; }