public virtual async Task <TEntity> Handle(CreateCommandModel <TEntity, TCreate> command, CancellationToken cancellationToken)
        {
            var entity = _mapper.Map <TEntity>(command.Request);

            Repository.Create(entity);

            return(entity);
        }
        public async Task Create_InvalidModelState_CreatePersonAccomplishmentNeverExecutes()
        {
            _controller.ModelState.AddModelError("FoodName", "Name is required");

            var personAccomplishment = new CreateCommandModel {
                BloodValue = 123
            };
            await _controller.Create(personAccomplishment);

            _servicMock.Verify(x => x.Create(It.IsAny <CreateCommandModel>()), Times.Never);
        }
        public async Task Create_ModelStateValide_CreateCallOnce()
        {
            var createFood = new CreateCommandModel {
                FoodName = "Pizza", BloodValue = 100
            };

            _servicMock.Setup(c => c.Create(createFood)).ReturnsAsync(true);

            var result = await _controller.Create(createFood);

            _servicMock.Verify(x => x.Create(It.IsAny <CreateCommandModel>()), Times.Once);
        }
        public async Task Create_ModelStateValide_CreateRedirectToIndexActionResult()
        {
            var createFood = new CreateCommandModel {
                FoodName = "Pizza", BloodValue = 100
            };

            _servicMock.Setup(c => c.Create(createFood)).ReturnsAsync(true);

            var result = await _controller.Create(createFood);

            var redirectToActionResult = Assert.IsType <RedirectToActionResult>(result);

            Assert.Equal("Index", redirectToActionResult.ActionName);
        }
예제 #5
0
        public async Task <IActionResult> Create(CreateCommandModel model)
        {
            if (ModelState.IsValid)
            {
                model.Name = User.Identity.Name;
                if (await _service.Create(model))
                {
                    _logger.LogInformation("User Created with {1}, {2} and {3}", model.FoodName, model.BloodValue, model.Name);
                    return(RedirectToAction("Index", "Home"));
                }
            }

            ModelState.AddModelError("", "Something went wromg to create database");
            _logger.LogError("Unable to create blood logs", model);
            return(View());
        }
예제 #6
0
        public Task <bool> Handle(CreateCommandModel request, CancellationToken cancellationToken)
        {
            // 命令验证
            if (!request.VerifyData())
            {
                // 错误信息收集
                NotifyValidationErrors(request);
                // 返回,结束当前线程
                return(Task.FromResult(false));
            }

            Infrastructure.Entitys.Permission entity = new Infrastructure.Entitys.Permission()
            {
                PermissionId       = request.PermissionId.ToString(),
                PermissionName     = request.PermissionName,
                PermissionAction   = request.PermissionAction,
                PermissionType     = request.PermissionType.EnumToInt(),
                PermissionParentId = request.PermissionParentId,
                IsValid            = request.IsValid
            };

            var existingEntity = _REPOSITORY.QueryByNameTypeParentId(entity.PermissionName, entity.PermissionType, entity.PermissionParentId);

            if (existingEntity != null && !string.IsNullOrWhiteSpace(existingEntity.PermissionId))
            {
                _Bus.RaiseEvent(new DomainNotification("Permission", "权限名称重复!"), "Permission");
                return(Task.FromResult(false));
            }
            //提交
            if (_REPOSITORY.CreatePermission(entity))
            {
                // 提交成功后,这里需要发布领域事件
                // 比如欢迎用户注册邮件呀,短信呀等
                _Bus.RaiseEvent(new Domain.Models.EventModels.Permission.CreatePermissionEventModel(entity.PermissionId.StringToGuid(),
                                                                                                    entity.PermissionName,
                                                                                                    entity.PermissionType.IntToEnum <Models.CommandModels.Permission.PermissionCommandModel.PermissionTypeEnum>(),
                                                                                                    entity.PermissionAction,
                                                                                                    entity.PermissionParentId,
                                                                                                    entity.IsValid), "Permission");
                return(Task.FromResult(true));
            }
            else
            {
                _Bus.RaiseEvent(new Notifications.DomainNotification("Permission", "数据写入失败!"), "Permission");
                return(Task.FromResult(false));
            }
        }
예제 #7
0
        /// <summary>
        ///  // RegisterStudentCommand命令的处理程序
        /// 整个命令处理程序的核心都在这里
        /// 不仅包括命令验证的收集,持久化,还有领域事件和通知的添加
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public Task <bool> Handle(CreateCommandModel request, CancellationToken cancellationToken)
        {
            // 命令验证
            if (!request.VerifyData())
            {
                // 错误信息收集
                NotifyValidationErrors(request);
                // 返回,结束当前线程
                return(Task.FromResult(false));
            }


            Infrastructure.Entitys.User entity = new Infrastructure.Entitys.User()
            {
                UserId     = request.UserId.ToString(),
                UserName   = request.UserName,
                Email      = request.Email,
                Phone      = request.Phone,
                Password   = request.Password,
                CreateTime = DateTime.Now,
                CreateName = request.CreateName
            };

            // 判断邮箱是否存在
            // 这些业务逻辑,当然要在领域层中(领域命令处理程序中)进行处理
            var existingUSER = _REPOSITORY.QueryByName(entity.UserName);

            if (existingUSER != null)
            {
                _Bus.RaiseEvent(new DomainNotification("User", "该用户已存在!"), "User");
                return(Task.FromResult(false));
            }
            //提交
            if (_REPOSITORY.CreateUser(entity))
            {
                // 提交成功后,这里需要发布领域事件
                // 比如欢迎用户注册邮件呀,短信呀等
                _Bus.RaiseEvent(new Domain.Models.EventModels.User.CreateUserEventModel(entity.UserId.StringToGuid(), entity.UserName, entity.Password, entity.Email, entity.Phone, entity.CreateName, entity.CreateTime), "User");
                return(Task.FromResult(true));
            }
            else
            {
                _Bus.RaiseEvent(new Notifications.DomainNotification("User", "数据写入失败!"), "User");
                return(Task.FromResult(false));
            }
        }
예제 #8
0
        public async Task <bool> Create(CreateCommandModel model)
        {
            var appUser = await _userManager.FindByEmailAsync(model.Name);

            if (appUser == null)
            {
                return(false);
            }

            var today      = DateTime.Now;
            var foodInTake = new FoodInTake {
                Name = model.FoodName, ApplicationUserId = appUser.Id, BloodValue = model.BloodValue, TakeTime = today
            };

            await _context.FoodInTakes.AddAsync(foodInTake);

            var isCread = await _context.SaveChangesAsync();

            if (isCread > -1)
            {
                return(true);
            }
            return(false);
        }
예제 #9
0
 public Task <bool> Handle(CreateCommandModel request, CancellationToken cancellationToken)
 {
     throw new NotImplementedException();
 }