public async Task <Response <SchemaProgress> > Handle( JoinSchemaCommand request, CancellationToken cancellationToken) { var schema = await _shopStore.GetSchema(request.SchemaId); var assignedSchema = SchemaFactory.Resolve(schema); if (!assignedSchema.Valid(_dateTime)) { return(Response.Fail <SchemaProgress>("Schema not valid")); } if (await _userStore.InSchemaAsync(request.UserId, request.SchemaId)) { return(Response.Fail <SchemaProgress>("Schema already joined")); } var progress = await _userStore.CreateSchemaProgressAsync(request.UserId, request.SchemaId); return(Response.Ok(progress, "Schema Joined")); }