public async Task <ActionResult> Save([FromBody] CreateVote model)
        {
            //This needs fixed
            if (!VotesEnabled)
            {
                return(ErrorView(ErrorViewModel.GetErrorViewModel(ErrorType.Unauthorized)));
            }

            try
            {
                ModelState.Clear();

                //Map to Domain Model
                var domainModel = model.Map();

                ////Reinsert Cache
                //cache.Replace($"VoteCreate:{User.Identity.Name}", domainModel);


                var valResult = Voat.Validation.ValidationHandler.Validate(domainModel);
                if (valResult != null)
                {
                    valResult.ForEach(x => ModelState.AddModelError(x.MemberNames.FirstOrDefault(), x.ErrorMessage));
                }
                CommandResponse <SaveVoteResponse> response = new CommandResponse <SaveVoteResponse>(new SaveVoteResponse(), Status.Success, "");

                if (ModelState.IsValid)
                {
                    //Save Vote
                    var cmd    = new PersistVoteCommand(domainModel).SetUserContext(User);
                    var result = await cmd.Execute();

                    if (result.Success)
                    {
                        response.Response.ID   = result.Response.ID;
                        response.Response.Html = await _viewRenderService.RenderToStringAsync("_View", await VoteAggregate.Load(result.Response));

                        return(JsonResult(response));
                        //return PartialView("_View", result.Response);
                    }
                    else
                    {
                        ModelState.AddModelError("", result.Message);
                    }
                }

                response.Status        = Status.Error;
                response.Response.Html = await _viewRenderService.RenderToStringAsync("_Edit", domainModel, ModelState);

                return(JsonResult(response));
                //return PartialView("_Edit", domainModel);
            }
            catch (Exception ex)
            {
                var x = ex;
                throw ex;
            }
        }
Exemple #2
0
        public async void Post([FromBody] CreateVote createVote)
        {
            var vote = new Vote()
            {
                VoteValue = createVote.Value, CreatedAt = DateTime.Now
            };

            _context.Votes.Add(vote);
            await _context.SaveChangesAsync();
        }
Exemple #3
0
        public JsonResult Add_organizor(CreateVote createVote)
        {
            Status status = Status.SUCCESS;

            if (ModelState.IsValid)
            {
                VoteService voteService = new VoteService();
                status = voteService.create(createVote);

                return(Json(new RespondModel(status, ""), JsonRequestBehavior.AllowGet));
            }

            return(Json(
                       new RespondModel(
                           Status.ARGUMENT_ERROR,
                           ModelStateHelper.errorMessages(ModelState)),
                       JsonRequestBehavior.AllowGet));
        }
        public static Vote Map(this CreateVote transform)
        {
            var model = new Vote();

            model.ID               = transform.ID;
            model.Title            = transform.Title;
            model.Content          = transform.Content;
            model.FormattedContent = Formatting.FormatMessage(transform.Content);
            model.Subverse         = transform.Subverse;

            transform.Options.ForEach(x =>
            {
                var option              = new VoteOption();
                option.ID               = x.ID;
                option.Title            = x.Title;
                option.Content          = x.Content;
                option.FormattedContent = Formatting.FormatMessage(x.Content);

                x.Outcomes.ForEach(o =>
                {
                    var outcome = o.Construct <VoteOutcome>();
                    if (outcome is ISubverse setSub)
                    {
                        setSub.Subverse = model.Subverse;
                    }
                    outcome.ID = o.ID;
                    option.Outcomes.Add(outcome);
                });
                model.Options.Add(option);
            });

            foreach (var r in transform.Restrictions)
            {
                var o = r.Construct <VoteRestriction>();
                if (o is ISubverse setSub)
                {
                    setSub.Subverse = model.Subverse;
                }
                o.ID = r.ID;
                model.Restrictions.Add(o);
            }

            return(model);
        }