public async Task <IActionResult> CreateAndNotifyReply([FromBody] CmdReply createNotifyCmd) { QuestWrite ctx = new QuestWrite( new EFList <Post>(_dbContext.Post), new EFList <User>(_dbContext.User)); var dependencies = new QuestDependencies(); dependencies.GenerateConfirmationToken = () => Guid.NewGuid().ToString(); dependencies.SendConfirmationEmail = SendEmail; var expr = from createReplyResult in QuestDomain.CreateReply(createNotifyCmd) let user = createReplyResult.SafeCast <ResultReply.ReplyCreated>().Select(p => p.Author) let notifyReplyCmd = new NotifyCmdReply(user) from NotifyReplyResult in QuestDomain.NotifyReply(notifyReplyCmd) select new { createReplyResult }; var r = await _interpreter.Interpret(expr, ctx, dependencies); _dbContext.Post.Add(new Post { PostTypeId = 2, PostText = createNotifyCmd.Body, PostedBy = new Guid("f505c32f-3573-4459-8112-af8276d3e919"), PostId = createNotifyCmd.QuestionId }); await _dbContext.SaveChangesAsync(); return(r.createReplyResult.Match( created => (IActionResult)Ok(created.Answer.PostId), notCreated => StatusCode(StatusCodes.Status500InternalServerError, "Reply could not be created."),//todo return 500 (), invalidRequest => BadRequest("Invalid request."))); }
public async Task <IActionResult> CreateAndConfirmationQuestion([FromBody] CreateQuestCmd createQuestCmd) { QuestWrite ctx = new QuestWrite( new EFList <Post>(_dbContext.Post), new EFList <User>(_dbContext.User)); var dependencies = new QuestDependencies(); dependencies.GenerateConfirmationToken = () => Guid.NewGuid().ToString(); dependencies.SendConfirmationEmail = SendEmail; var expr = from createQuestResult in QuestDomain.CreateQuestion(createQuestCmd) let user = createQuestResult.SafeCast <CreateQuestResult.QuestCreated>().Select(p => p.Author) let confirmQuestCmd = new ConfirmQuestCmd(user) from ConfirmQuestResult in QuestDomain.ConfirmQuestion(confirmQuestCmd) select new { createQuestResult, ConfirmQuestResult }; var r = await _interpreter.Interpret(expr, ctx, dependencies); // _dbContext.Post.Add(new Post { PostTypeId=1,Title=createQuestCmd.Title, PostText=createQuestCmd.Body}); await _dbContext.SaveChangesAsync(); return(r.createQuestResult.Match( created => (IActionResult)Ok(created.Question.PostId), notCreated => StatusCode(StatusCodes.Status500InternalServerError, "Question could not be created."),//todo return 500 (), invalidRequest => BadRequest("Invalid request."))); }
public QuestController(IQuestRepository questRepository, IRepetitionRepository repRepository, ILogger <QuestController> log, QuestDomain questDomain) { this.questRepository = questRepository; this.repRepository = repRepository; this.questDomain = questDomain; this._logger = log; }
/// <summary> /// Initializes a new <see cref="AccountController"/>. /// </summary> /// <param name="configuration">Provides access to configuration data.</param> public AccountController(IConfiguration configuration, ILogger <AccountController> logger) { accountDomain = new AccountDomatin(configuration); questDomain = new QuestDomain(configuration); this.logger = logger; }
public QuestStepController(IConfiguration configuration, ILogger <QuestStepController> logger) { questDomain = new QuestDomain(configuration); this.logger = logger; }