Ejemplo n.º 1
0
        public async Task <IActionResult> CreateQuestion([FromBody] CreateQuestionCmd cmd)
        {
            QuestionsWriteContext ctx = new QuestionsWriteContext(
                new EFList <Post>(_dbContext.Post));

            var dep = new QuestionsDependencies();

            var questions = await _dbContext.Post.ToListAsync();

            //var questions = await _dbContext.Post.Where(q => q.PostTypeId == 1).ToListAsync();
            _dbContext.Post.AttachRange(questions);

            var expr = from createQuestionResult in QuestionsDomain.CreateQuestion(cmd)
                       //let checkLanguageCmd = new CheckLanguageCmd()
                       //select CreateQuestionResult;
                       from checkLanguageResult in QuestionsDomain.CheckLanguage(new CheckLanguageCmd(cmd.PostText))
                       //from sendAckToQuestionOwnerCmd in QuestionsDomain.SendQuestionOwnerAcknowledgement(new SendQuestionOwnerAcknowledgementCmd())
                       select new { createQuestionResult, checkLanguageResult };

            var r = await _interpreter.Interpret(expr, ctx, dep);

            //var reply = await _dbContext.QuestionModel.Where(r => r.Title == "intrebTest").SingleOrDefaultAsync();
            //_dbContext.Question.Update(reply);
            //await _dbContext.SaveChangesAsync();

            _dbContext.SaveChanges();

            return(r.createQuestionResult.Match(
                       created => (IActionResult)Ok("PostID of question created:" + created.question.PostId),
                       notCreated => StatusCode(StatusCodes.Status500InternalServerError, "Question could not be created."),//todo return 500 (),
                       invalidRequest => BadRequest("Invalid request.")));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> CreateAnswer([FromBody] CreateAnswerCmd cmd)
        {
            QuestionsWriteContext ctx = new QuestionsWriteContext(
                new EFList <Post>(_dbContext.Post));

            var dep = new QuestionsDependencies();
            //dep.GenerateConfirmationToken = () => Guid.NewGuid().ToString();
            //dep.SendConfirmationEmail = SendConfirmationEmail
            var answers = await _dbContext.Post.ToListAsync();

            _dbContext.Post.AttachRange(answers);


            var expr = from createAnswerResult in QuestionsDomain.CreateAnswer(cmd)
                       //let checkLanguageCmd = new CheckLanguageCmd()
                       from checkLanguageResult in QuestionsDomain.CheckLanguage(new CheckLanguageCmd(cmd.PostText))
                       //from sendAckAuthor in QuestionsDomain.SendAnswerAuthorAcknowledgement(new SendAnswerAuthorAcknowledgementCmd(Guid.NewGuid(), 1, 2))
                       select new { createAnswerResult, checkLanguageResult };

            var r = await _interpreter.Interpret(expr, ctx, dep);

            //_dbContext.Replies.Add(new DatabaseModel.Models.Reply { Body = cmd.PostText, AuthorUserId = 1, QuestionId = cmd.QuestionId, ReplyId = 4 });
            // var reply = await _dbContext.Replies.Where(r => r.ReplyId == 4).SingleOrDefaultAsync();
            //reply.Body = "Text updated";
            //_dbContext.Replies.Update(reply);
            //await _dbContext.SaveChangesAsync();

            _dbContext.SaveChanges();

            return(r.createAnswerResult.Match(
                       created => (IActionResult)Ok("PostID of answer created: " + created.answer.PostId),
                       notCreated => StatusCode(StatusCodes.Status500InternalServerError, "Answer could not be created."),//todo return 500 (),
                       invalidRequest => BadRequest("Invalid request.")));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> CreateReply([FromBody] CreateReplyCmd cmd)
        {
            var dep = new QuestionsDependencies();

            var replies = await _dbContext.Replies.ToListAsync();

            _dbContext.Replies.AttachRange(replies);

            var ctx = new QuestionsWriteContext(new EFList <Reply>(_dbContext.Replies));

            var expr = from createTenantResult in QuestionsContextOp.CreateReply(cmd)
                       from checkLanguageResult in QuestionsContextOp.CheckLanguage(new CheckLanguageOpCmd(cmd.Body))
                       from sendAckAuthor in QuestionsContextOp.SendReplyAuthorAcknowledgement(new SendReplyAuthorAcknowledgementCmd(Guid.NewGuid(), 1, 2))

                       select createTenantResult;

            var r = await _interpreter.Interpret(expr, ctx, dep);

            //   _dbContext.Replies.Add(new DatabaseModel.Models.Reply { Body = cmd.Body, AuthorUserId = 1, QuestionId = cmd.QuestionId, ReplyId = 4 });

            //var reply = await _dbContext.Replies.Where(r => r.ReplyId == 4).SingleOrDefaultAsync();
            //reply.Body = "Text updated";
            //_dbContext.Replies.Update(reply);
            await _dbContext.SaveChangesAsync();


            return(r.Match(
                       succ => (IActionResult)Ok(succ.Body),
                       fail => BadRequest("Reply could not be added")
                       ));
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> CreateQuestion([FromBody] CreateQuestionCmd cmd)
        {
            var dep       = new QuestionsDependencies();
            var questions = await _dbContext.Questions.ToListAsync();

            _dbContext.Questions.AttachRange(questions);

            var ctx = new QuestionsWriteContextC(new EFList <Question>(_dbContext.Questions));

            var expr = from createQuestionResult in QuestionContext.CreateQuestion(cmd)
                       from checkLanguageResult in QuestionContext.CheckLanguage(new CheckLanguageCmd(cmd.Text))
                       from sendAckOwner in QuestionContext.SendAcknowledgementToQuestionOwner(new SendAcknowledgementToQuestionOwnerCmd(1, 2))
                       select createQuestionResult;

            var r = await _interpreter.Interpret(expr, ctx, dep);

            _dbContext.Questions.Add(new DatabaseModel.Models.Question {
                QuestionId = Guid.NewGuid(), Titlu = cmd.Titlu, Text = cmd.Text, Tags = cmd.Tags
            });
            await _dbContext.SaveChangesAsync();

            return(r.Match(
                       succ => (IActionResult)Ok(succ.Text),
                       notCreated => BadRequest("NotPosted"),
                       invalidRequest => ValidationProblem()
                       ));
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> CreateReply([FromBody] CreateReplyCmd cmd)
        {
            var dep     = new QuestionsDependencies();
            var replies = await _dbContext.Replies.ToListAsync();

            var ctx = new QuestionsWriteContext(replies);

            var expr = from createTenantResult in QuestionsContext.CreateReply(cmd)
                       select createTenantResult;

            var r = await _interpreter.Interpret(expr, ctx, dep);

            _dbContext.Replies.Add(new DatabaseModel.Models.Reply {
                Body = cmd.Body, AuthorUserId = new Guid("9431a4d2-ce83-4ae6-ac13-2f0b2b1d31de"), QuestionId = cmd.QuestionId, ReplyId = 4
            });
            //var reply = await _dbContext.Replies.Where(r => r.ReplyId == 4).SingleOrDefaultAsync();
            //reply.Body = "Text updated";
            //_dbContext.Replies.Update(reply);
            await _dbContext.SaveChangesAsync();


            return(r.Match(
                       succ => (IActionResult)Ok(succ.Body),
                       fail => BadRequest("Reply could not be added")
                       ));
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> CreateQuestion([FromBody] CreateQuestionsCmd cmd)
        {
            var dep = new QuestionsDependencies();

            var questions = await _dbContext.Questions.ToListAsync();

            //var ctx = new QuestionsWriteContext(questions);
            _dbContext.Questions.AttachRange(questions);

            var ctx = new QuestionsWriteContext(new EFList <Question>(_dbContext.Questions));

            var expr = from createQuestionResult in QuestionsContext.CreateQuestion(cmd)
                       //let checkLanguageCmd = new CheckLanguageCmd()
                       from checkLanguageResult in QuestionsContext.CheckLanguage(new CheckLanguageCmd(cmd.Description))
                       from sendAckAuthor in QuestionsContext.SendQuestionAuthorAcknowledgement(new SendQuestionAuthorAcknowledgementCmd(Guid.NewGuid(), 1, 2))
                       select createQuestionResult;

            var r = await _interpreter.Interpret(expr, ctx, dep);

            _dbContext.Questions.Add(new DatabaseModel.Models.Question {
                QuestionId = cmd.QuestionId, Title = cmd.Title, Description = cmd.Description, Tags = cmd.Tags
            });
            await _dbContext.SaveChangesAsync();

            var reply = await _dbContext.Questions.Where(r => r.QuestionId == cmd.QuestionId).SingleOrDefaultAsync();

            _dbContext.Questions.Update(reply);

            return(r.Match(
                       succ => (IActionResult)Ok("Succeeded"),
                       fail => BadRequest("Question could not be added")
                       ));
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> PostQuestion([FromBody] PostQuestionCmd cmd)
        {
            var dep = new QuestionsDependencies();

            dep.SendInvitationEmail = SendEmail;
            var questions = await _dbContext.Questions.ToListAsync();

            var ctx = new QuestionsWriteContext(questions);

            var expr = from postQuestionsResult in QuestionsContext.PostQuestion(cmd)
                       from sendOwnerAck in QuestionsContext.SendQuestionOwnerAcknowledgement(new SendQuestionOwnerAcknowledgementCmd(new Guid("f505c32f-3573-4459-8112-af8276d3e919"), "*****@*****.**"))
                       select postQuestionsResult;

            var r = await _interpreter.Interpret(expr, ctx, dep);

            _dbContext.Questions.Add(new DatabaseModel.Models.Post {
                PostId = cmd.QuestionId, Title = cmd.Title, PostText = cmd.Body, PostedBy = new Guid("f505c32f-3573-4459-8112-af8276d3e919")
            });
            //var reply = await _dbContext.Replies.Where(r => r.ReplyId == 4).SingleOrDefaultAsync();
            //reply.Body = "Text updated";
            //_dbContext.Replies.Update(reply);
            await _dbContext.SaveChangesAsync();


            return(r.Match(
                       succ => (IActionResult)Ok(succ.QuestionId),
                       fail => BadRequest("Question could not be added"),
                       invalid => BadRequest("Invalid Question")
                       ));
        }
Ejemplo n.º 8
0
        public async Task <IActionResult> CreateQuestion([FromBody] CreateQuestionCmd cmd)
        {
            var dep = new QuestionsDependencies();

            var questions = await _dbContext.Question.ToListAsync();

            _dbContext.Question.AttachRange(questions);

            var ctx = new QuestionsWriteContext(new List <Question>());

            var expr = from CreateQuestionResult in QuestionsContext.CreateQuestion(cmd)
                       //let checkLanguageCmd = new CheckLanguageCmd()
                       //select CreateQuestionResult;
                       from checkLanguageResult in QuestionsContext.CheckLanguage(new CheckLanguageCmd(cmd.Body))
                       from sendAckToQuestionOwnerCmd in QuestionsContext.SendQuestionOwnerAcknowledgement(new SendQuestionOwnerAcknowledgementCmd(1, 1))
                       select CreateQuestionResult;

            var r = await _interpreter.Interpret(expr, ctx, dep);


            _dbContext.Question.Add(new DatabaseModel.Models.Question {
                QuestionId = Guid.NewGuid(), Title = cmd.Title, Description = cmd.Body, Tags = cmd.Tags
            });
            //var reply = await _dbContext.QuestionModel.Where(r => r.Title == "intrebTest").SingleOrDefaultAsync();
            //_dbContext.Question.Update(reply);
            await _dbContext.SaveChangesAsync();

            return(r.Match(
                       succ => (IActionResult)Ok("Question successfully added"),
                       fail => BadRequest("Question could not be added")
                       ));
        }
Ejemplo n.º 9
0
        public async Task <IActionResult> CreateReply([FromBody] CreateReplyCmd cmd)
        {
            var dep = new QuestionsDependencies();
            var ctx = new QuestionsWriteContext();

            var expr = from createTenantResult in QuestionsContext.CreateReply(cmd)
                       select createTenantResult;

            var r = await _interpreter.Interpret(expr, ctx, dep);

            return(r.Match(
                       succ => (IActionResult)Ok(succ.Body),
                       fail => BadRequest("Reply could not be added")
                       ));
        }
Ejemplo n.º 10
0
        public async Task <IActionResult> CreateQuestion([FromBody] PostQuestionCmd cmd)
        {
            var dep       = new QuestionsDependencies();
            var questions = await _dbContext.Questions.ToListAsync();

            var ctx  = new QuestionsWriteContext(questions);
            var expr = from createQuestionResult in QuestionsContext.PostQuestion(cmd)
                       select createQuestionResult;
            var r = await _interpreter.Interpret(expr, ctx, dep);

            _dbContext.Questions.Add(new DatabaseModel.Models.Question {
                QuestionId = cmd.QuestionId, Title = cmd.Title, Body = cmd.Body, Tags = cmd.Tags, Votes = cmd.Votes
            });
            //var reply = await _dbContext.Replies.Where(r => r.ReplyId == 4).SingleOrDefaultAsync();
            //reply.Body = "Text updated";
            //_dbContext.Replies.Update(reply);
            await _dbContext.SaveChangesAsync();

            return(Ok());
        }
Ejemplo n.º 11
0
        public async Task <IActionResult> CreateQuestion([FromBody] CreateQuestionCmd cmd)
        {
            var dep     = new QuestionsDependencies();
            var replies = await _dbContext.Questions.ToListAsync();

            _dbContext.Questions.AttachRange(replies);

            var ctx = new QuestionsWriteContextC(new EFList <Question>(_dbContext.Questions));

            var expr = from createTenantResult in QuestionContext.CreateQuestion(cmd)
                       from checkLanguageResult in QuestionContext.CheckLanguage(new CheckLanguageCmd(cmd.Text))
                       select createTenantResult;

            var r = await _interpreter.Interpret(expr, ctx, dep);

            return(r.Match(
                       created => Ok(created),
                       notCreated => BadRequest(notCreated),
                       invalidRequest => ValidationProblem()
                       ));
        }
Ejemplo n.º 12
0
        public async Task <IActionResult> CreateReply([FromBody] CreateReplyCmd cmd)
        {
            var dep     = new QuestionsDependencies();
            var replies = await _dbContext.Replies.ToListAsync();

            var ctx = new QuestionsWriteContext(replies);

            var expr = from createReplyResult in QuestionsContext.CreateReply(cmd)
                       select createReplyResult;

            var r = await _interpreter.Interpret(expr, ctx, dep);

            _dbContext.Replies.Add(new DatabaseModel.Models.Reply {
                Body = cmd.Body, AuthorUserId = new Guid("f505c32f-3573-4459-8112-af8276d3e919"), QuestionId = cmd.QuestionId, ReplyId = 4
            });
            await _dbContext.SaveChangesAsync();


            return(r.Match(
                       succ => (IActionResult)Ok(succ.Body),
                       fail => BadRequest("Reply could not be added")
                       ));
        }