public async Task <ServiceResult <int> > Create(ProductCreateOrUpdateRequestViewModel viewModel) { var model = new Product(); MapViewModelToModel(viewModel, model); var validator = new ProductCreateOrUpdateRequestViewModelValidator(); var validationResult = await validator.ValidateAsync(model); if (!validationResult.IsValid) { return(ServiceResultFactory.Fail <int>(validationResult)); } await _repository.AddAsync(model); var changes = await _repository.SaveChangesAsync(); if (changes == 0) { return(ServiceResultFactory.Fail <int>("Insert fails")); } return(ServiceResultFactory.Success(model.Id)); }