Пример #1
0
        public async Task <int> CreatePrompt(StoryPartViewModel prompt)
        {
            var story = new Story
            {
                StoryId   = prompt.StoryId,
                StoryName = prompt.StoryName,
                Parts     = new List <StoryPart>()
            };
            var part = new StoryPart
            {
                PartId          = prompt.PartId,
                CreatedDateTime = DateTime.Now,
                PartText        = prompt.PartText,
                Author          = prompt.Author,
                IsEnd           = false,
                StoryId         = prompt.StoryId
            };

            _storyContext.Stories.Add(story);

            await _storyContext.SaveChangesAsync();

            story.Parts.Add(part);

            part.PartNumber = story.Parts.Count;
            part.StoryName  = story.StoryName;
            part.Story      = story;

            _storyContext.StoryParts.Add(part);

            return(await _storyContext.SaveChangesAsync());
        }
Пример #2
0
        public async Task <List <StoryViewModel> > GetMyContributions(string user)
        {
            var st = await _storyContext.Stories.ToListAsync();

            List <StoryViewModel> stories = new List <StoryViewModel>();

            foreach (Story s in st)
            {
                StoryViewModel svm = new StoryViewModel {
                    StoryId   = s.StoryId,
                    StoryName = s.StoryName,
                    Parts     = new List <StoryPartViewModel>()
                };

                foreach (StoryPart sp in s.Parts)
                {
                    StoryPartViewModel spvm = new StoryPartViewModel {
                        CreatedDateTime = sp.CreatedDateTime,
                        PartNumber      = sp.PartNumber,
                        PartText        = sp.PartText,
                        Author          = sp.Author,
                        StoryId         = sp.StoryId,
                        StoryName       = sp.StoryName,
                        Story           = svm
                    };

                    if (spvm.Author == user)
                    {
                        svm.Parts.Add(spvm);
                    }
                }
                if (svm.Parts.Count > 0)
                {
                    stories.Add(svm);
                }
            }

            if (stories == null)
            {
                return(new List <StoryViewModel>());
            }

            return(stories);
        }
Пример #3
0
        public async Task <ActionResult> AddPart(StoryPartModel part)
        {
            var user = System.Web.HttpContext.Current.GetOwinContext()
                       .GetUserManager <ApplicationUserManager>()
                       .FindById(System.Web.HttpContext.Current.User.Identity.GetUserId());

            if (ModelState.IsValid)
            {
                try
                {
                    var sp = new StoryPartViewModel
                    {
                        PartId          = Guid.NewGuid(),
                        CreatedDateTime = DateTime.Now,
                        PartText        = part.PartText,
                        Author          = user.UserName,
                        IsEnd           = part.IsEnd,
                        StoryId         = ViewBag.Id
                    };


                    await _storyOrchestrator.AddPart(sp);

                    if (part.IsEnd == false)
                    {
                        var nextAuthor = await _nextAuthorService.GetNextAuthor(user);

                        await _nextAuthorService.SetNextAuthor(part.StoryId, nextAuthor);
                    }
                    else
                    {
                        await _storyOrchestrator.FinishStory(part.StoryId);
                    }
                    return(View("~/Views/Home/Index.cshtml"));
                }
                catch (DataException dex)
                {
                    Console.WriteLine(dex);
                    ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
                }
            }

            return(View("AddPart"));
        }
Пример #4
0
        public async Task <StoryViewModel> GetFinishedTopicStory(string keyword)
        {
            var story = await _storyContext.StoryParts
                        .Where(x => x.Story.IsFinished == true &&
                               (x.StoryName.Contains(keyword) ||
                                x.PartText.Contains(keyword)))
                        .OrderBy(c => Guid.NewGuid())
                        .FirstOrDefaultAsync();

            if (story == null)
            {
                return(new StoryViewModel());
            }

            StoryViewModel storyView = new StoryViewModel {
                StoryId    = story.StoryId,
                StoryName  = story.StoryName,
                NextAuthor = story.Story.NextAuthor,
                IsFinished = story.Story.IsFinished,
                Parts      = new List <StoryPartViewModel>()
            };

            foreach (StoryPart sp in story.Story.Parts)
            {
                StoryPartViewModel spvm = new StoryPartViewModel();

                spvm.PartId          = sp.PartId;
                spvm.CreatedDateTime = sp.CreatedDateTime;
                spvm.PartNumber      = sp.PartNumber;
                spvm.PartText        = sp.PartText;
                spvm.Author          = sp.Author;
                spvm.IsEnd           = sp.IsEnd;
                spvm.StoryId         = sp.StoryId;
                spvm.StoryName       = sp.StoryName;
                spvm.Story           = storyView;

                storyView.Parts.Add(spvm);
            }

            return(storyView);
        }
Пример #5
0
        public async Task <List <StoryViewModel> > GetNewPrompts()
        {
            var st = await _storyContext.Stories
                     .Where(x => x.Parts.Count == 1)
                     .ToListAsync();

            List <StoryViewModel> stories = new List <StoryViewModel>();

            foreach (Story s in st)
            {
                StoryViewModel svm = new StoryViewModel {
                    StoryId    = s.StoryId,
                    StoryName  = s.StoryName,
                    NextAuthor = s.NextAuthor,
                    IsFinished = s.IsFinished,
                    Parts      = new List <StoryPartViewModel>()
                };

                foreach (StoryPart sp in s.Parts)
                {
                    StoryPartViewModel spvm = new StoryPartViewModel {
                        PartId          = sp.PartId,
                        CreatedDateTime = sp.CreatedDateTime,
                        PartNumber      = sp.PartNumber,
                        PartText        = sp.PartText,
                        Author          = sp.Author,
                        IsEnd           = sp.IsEnd,
                        StoryId         = sp.StoryId,
                        StoryName       = sp.StoryName,
                        Story           = svm
                    };

                    svm.Parts.Add(spvm);
                }

                stories.Add(svm);
            }

            return(stories);
        }
Пример #6
0
        public async Task <int> AddPart(StoryPartViewModel part)
        {
            var sp = new StoryPart
            {
                PartId          = Guid.NewGuid(),
                CreatedDateTime = DateTime.Now,
                PartText        = part.PartText,
                Author          = part.Author,
                IsEnd           = part.IsEnd,
                StoryId         = part.StoryId,
                StoryName       = part.StoryName
            };

            var story = _storyContext.Stories.Find(part.StoryId);

            sp.Story = story;
            story.Parts.Add(sp);

            _storyContext.StoryParts.Add(sp);

            return(await _storyContext.SaveChangesAsync());
        }
Пример #7
0
        public async Task <ActionResult> CreatePrompt(StoryPartModel prompt)
        {
            var user = System.Web.HttpContext.Current.GetOwinContext()
                       .GetUserManager <ApplicationUserManager>()
                       .FindById(System.Web.HttpContext.Current.User.Identity.GetUserId());

            if (ModelState.IsValid)
            {
                try
                {
                    var part = new StoryPartViewModel
                    {
                        PartId          = Guid.NewGuid(),
                        CreatedDateTime = DateTime.Now,
                        PartText        = prompt.PartText,
                        Author          = user.UserName,
                        IsEnd           = false,
                        StoryId         = Guid.NewGuid(),
                        StoryName       = prompt.StoryName
                    };

                    await _storyOrchestrator.CreatePrompt(part);

                    var nextAuthor = await _nextAuthorService.GetNextAuthor(user);

                    await _nextAuthorService.SetNextAuthor(part.StoryId, nextAuthor);

                    System.Web.HttpContext.Current.Response.Write("<script>alert('Prompt created successfully!')</script>");
                    ModelState.Clear();
                    return(View("CreatePrompt"));
                }
                catch (DataException dex)
                {
                    Console.WriteLine(dex);
                    ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
                }
            }
            return(View("CreatePrompt"));
        }
Пример #8
0
        public async Task <StoryViewModel> GetStory(Guid id)
        {
            var story = await _storyContext.Stories
                        .FindAsync(id);

            if (story == null)
            {
                return(new StoryViewModel());
            }

            StoryViewModel storyView = new StoryViewModel {
                StoryId    = story.StoryId,
                StoryName  = story.StoryName,
                NextAuthor = story.NextAuthor,
                IsFinished = story.IsFinished,
                Parts      = new List <StoryPartViewModel>()
            };

            foreach (StoryPart sp in story.Parts)
            {
                StoryPartViewModel spvm = new StoryPartViewModel {
                    PartId          = sp.PartId,
                    CreatedDateTime = sp.CreatedDateTime,
                    PartNumber      = sp.PartNumber,
                    PartText        = sp.PartText,
                    Author          = sp.Author,
                    IsEnd           = sp.IsEnd,
                    StoryId         = sp.StoryId,
                    StoryName       = sp.StoryName,
                    Story           = storyView
                };

                storyView.Parts.Add(spvm);
            }

            return(storyView);
        }