public async Task <VoteDTO> EditVote(VoteEditDTO voteInfo, int tripId)
        {
            using (_unitOfWork)
            {
                Vote vote = await _unitOfWork.VoteRepository.FindByID(voteInfo.VoteId);

                if (vote.Positive != voteInfo.Positive)
                {
                    Votable votable = await _unitOfWork.VotableRepository.FindByID(vote.VotableId);

                    if (vote.Positive)
                    {
                        votable.NegativeVotes++;
                        votable.PositiveVotes--;
                    }
                    else
                    {
                        votable.NegativeVotes--;
                        votable.PositiveVotes++;
                    }

                    await _messageControllerService.NotifyOnTripChanges(tripId, "ChangeVotable", _mapper.Map <Votable, VotableDTO>(votable));
                }

                vote.Positive = voteInfo.Positive;
                await _unitOfWork.Save();

                return(_mapper.Map <Vote, VoteDTO>(vote));
            }
        }
        public async Task <VotableDTO> RemoveVote(int voteId, int tripId)
        {
            using (_unitOfWork)
            {
                Vote vote = await _unitOfWork.VoteRepository.FindByID(voteId);

                Votable votable = await _unitOfWork.VotableRepository.GetVotableWithVotes(vote.VotableId);

                votable.Votes.Remove(vote);
                if (vote.Positive)
                {
                    votable.PositiveVotes--;
                }
                else
                {
                    votable.NegativeVotes--;
                }

                _unitOfWork.VotableRepository.Update(votable);
                _unitOfWork.VoteRepository.Delete(voteId);
                await _unitOfWork.Save();

                await _messageControllerService.NotifyOnTripChanges(tripId, "ChangeVotable", _mapper.Map <Votable, VotableDTO>(votable));

                return(_mapper.Map <Votable, VotableDTO>(votable));
            }
        }
        public async Task <VoteDTO> Vote(VoteCreateDTO newVote, int tripId)
        {
            using (_unitOfWork)
            {
                Vote    vote    = _mapper.Map <VoteCreateDTO, Vote>(newVote);
                Votable votable = await _unitOfWork.VotableRepository.GetVotableWithVotes(newVote.VotableId);

                if (votable.Votes.Where(x => x.UserId == newVote.UserId).FirstOrDefault() != null)
                {
                    return(null);
                }

                votable.Votes.Add(vote);
                if (newVote.Positive)
                {
                    votable.PositiveVotes++;
                }
                else
                {
                    votable.NegativeVotes++;
                }
                vote.Votable = votable;

                _unitOfWork.VotableRepository.Update(votable);
                await _unitOfWork.VoteRepository.Create(vote);

                await _unitOfWork.Save();

                await _messageControllerService.NotifyOnTripChanges(tripId, "ChangeVotable", _mapper.Map <Votable, VotableDTO>(votable));

                return(_mapper.Map <Vote, VoteDTO>(vote));
            }
        }
Exemple #4
0
        public void CrearVotableBasico()
        {
            var g       = new GestorPersistenciaEF();
            var votable = new Votable();

            g.Guardar(votable);

            Assert.IsTrue(votable.Id > 0);
        }
            // Trigger the spell activation banner
            public void ShowBanner()
            {
                Votable votable = new Votable()
                {
                    Implementation = spellData.spellImpl,
                    color          = spellData.color
                };

                EffectBanner.inst.ShowBannerGeneric(votable, ScriptLocalization.TheWitch, witchUI.witchSpr, spellData.locKey);
            }
        public async Task <ICollection <VoteDTO> > GetVotes(int VotableId, bool positive)
        {
            using (_unitOfWork)
            {
                Votable votable = await _unitOfWork.VotableRepository.GetVotableWithVotes(VotableId);

                List <VoteDTO> retValue = votable.Votes.Where(vote => vote.Positive == positive)
                                          .Select(vote => _mapper.Map <Vote, VoteDTO>(vote)).ToList();
                return(retValue);
            }
        }
Exemple #7
0
        private void CrearVotable(IElementoVotable elementoVotable)
        {
            if (elementoVotable.VotableId > 0)
            {
                return;
            }

            // crear votable
            var votable = new Votable();

            _gestorPersistencia.Guardar(votable);
            elementoVotable.VotableId = votable.Id;
        }
        public async Task <VoteEditDTO> HaveIVotedFor(int votableId, int userId)
        {
            using (_unitOfWork)
            {
                Votable votable = await _unitOfWork.VotableRepository.GetVotableWithVotes(votableId);

                Vote vote = votable.Votes.Where(x => x.UserId == userId).FirstOrDefault();
                if (vote == null)
                {
                    return(null);
                }
                return(_mapper.Map <Vote, VoteEditDTO>(vote));
            }
        }
        public async Task <AccommodationDTO> CreateAccommodation(AccommodationCreateDTO newAccommodation)
        {
            using (_unitOfWork)
            {
                if (!DateManagerService.checkFromToDates(newAccommodation.From, newAccommodation.To))
                {
                    return(null);
                }

                Accommodation accommodation = _mapper.Map <AccommodationCreateDTO, Accommodation>(newAccommodation);
                Location      location      = await _unitOfWork.LocationRepository.FindByID(newAccommodation.LocationId);

                if (!DateManagerService.checkParentChildDates(location.From, location.To, accommodation.From, accommodation.To))
                {
                    return(null);
                }

                accommodation.Location = location;

                if (location.Accommodations == null)
                {
                    location.Accommodations = new List <Accommodation>();
                }
                location.Accommodations.Add(accommodation);

                Votable votable = new Votable();
                accommodation.Votable = votable;

                await _unitOfWork.VotableRepository.Create(votable);

                await _unitOfWork.AccommodationRepository.Create(accommodation);

                await _unitOfWork.Save();

                AccommodationDTO retValue = _mapper.Map <Accommodation, AccommodationDTO>(accommodation);
                await _messageControllerService.NotifyOnTripChanges(location.TripId, "AddAccommodation", retValue);

                return(retValue);
            }
        }
        public async Task <LocationDTO> CreateLocation(LocationCreateDTO newLocation)
        {
            using (_unitOfWork)
            {
                if (!DateManagerService.checkFromToDates(newLocation.From, newLocation.To))
                {
                    return(null);
                }

                Location location = _mapper.Map <LocationCreateDTO, Location>(newLocation);
                Trip     trip     = await _unitOfWork.TripRepository.FindByID(location.TripId);

                if (!DateManagerService.checkParentChildDates(trip.From, trip.To, location.From, location.To))
                {
                    return(null);
                }

                location.Trip = trip;

                if (trip.Locations == null)
                {
                    trip.Locations = new List <Location>();
                }
                trip.Locations.Add(location);

                Votable votable = new Votable();
                location.Votable = votable;

                await _unitOfWork.VotableRepository.Create(votable);

                await _unitOfWork.LocationRepository.Create(location);

                await _unitOfWork.Save();

                LocationDTO retValue = _mapper.Map <Location, LocationDTO>(location);
                await _messageControllerService.NotifyOnTripChanges(location.TripId, "AddLocation", retValue);

                return(retValue);
            }
        }
Exemple #11
0
 public void Guardar(Votable votable)
 {
     _ctx.DbSetVotable.AddOrUpdate(votable);
     _ctx.SaveChanges();
 }
Exemple #12
0
    public void Initialize(Votable votable)
    {
        if (votable.Privacy == Privacy.Secret && User.User_Info.Role == User.User_Role.default_)
        {
            gameObject.SetActive(false);
            return;
        }

        this.votable = votable;

        switch (votable.Votable_Type)
        {
        case Votable_Type.Binary:
            colors = new List <Color>
            {
                Data_UI.color_rejected(1),
                Data_UI.color_affirmed(1),
            };
            break;

        case Votable_Type.Multiple_Single_Select:
            colors = new List <Color>
            {
                Data_UI.color_alternative_0(1),
                Data_UI.color_affirmed(1),
                Data_UI.color_alternative_1(1),
                Data_UI.color_alternative_2(1),
                Data_UI.color_rejected(1),
                Data_UI.color_alternative_3(1),
                new Color(Random.Range(0, 1), Random.Range(0, 1), Random.Range(0, 1)),
                new Color(Random.Range(0, 1), Random.Range(0, 1), Random.Range(0, 1)),
                new Color(Random.Range(0, 1), Random.Range(0, 1), Random.Range(0, 1)),
                new Color(Random.Range(0, 1), Random.Range(0, 1), Random.Range(0, 1)),
                new Color(Random.Range(0, 1), Random.Range(0, 1), Random.Range(0, 1))
            };
            break;
        }

        float rotation = 0;

        not_voted = new List <User.User_Information>(User.Users_Info);
        not_voted.Add(User.User_Info);

        for (int x = 0; x < votable.Vote_Types.Count; x++)
        {
            foreach (User.User_Information user in votable.Vote_Voters[x])
            {
                not_voted.Remove(not_voted.Find(a => a.Id == user.Id));
            }

            Pie_Chart_Part part = Instantiate(pie_part_prefab, pie_part_parent).GetComponent <Pie_Chart_Part>();
            part.Descriptor = votable.Vote_Types[x];

            float percentage = (float)votable.Vote_Voters[x].Count / (float)User.Users_Info.Count;
            Image image      = part.GetComponent <Image>();
            image.fillAmount             = percentage;
            image.color                  = colors[x];
            part.transform.localRotation = Quaternion.Euler(0, 0, rotation);

            Text pie_info = Instantiate(bold_text_prefab, pie_part_description_parent).GetComponent <Text>();
            pie_info.text  = Utils.Translate(part.Descriptor) + ": " + votable.Vote_Voters[x].Count.ToString();
            pie_info.color = Utils.Darken_Color(colors[x], 0.25f);

            if (votable.Vote_Voters[x].Count > 0 && (votable.Privacy == Privacy.Public || User.User_Info.Role >= User.User_Role.moderator))
            {
                Text vote_list = Instantiate(bold_text_prefab, voter_list_parent).GetComponent <Text>();
                vote_list.color = Utils.Darken_Color(colors[x], 0.25f);
                vote_list.text  = Utils.Translate(part.Descriptor) + ":";

                vote_list = Instantiate(semibold_text_prefab, voter_list_parent).GetComponent <Text>();

                foreach (User.User_Information user in votable.Vote_Voters[x])
                {
                    vote_list.text += " " + user.Name + ",";
                }

                if (votable.Vote_Voters[x].Count > 0)
                {
                    vote_list.text = vote_list.text.Substring(0, vote_list.text.Length - 1);
                }
            }

            rotation -= 360 * percentage;
        }

        if (not_voted.Count > 0 && User.User_Info.Role >= User.User_Role.moderator)
        {
            Utils.Update_UI = true;
        }

        Text pie_info_no_vote = Instantiate(bold_text_prefab, pie_part_description_parent).GetComponent <Text>();

        pie_info_no_vote.text  = "Sin contestar: " + not_voted.Count.ToString();
        pie_info_no_vote.color = Data_UI.color_not_answered(1);
        pie_info_no_vote.transform.SetAsFirstSibling();

        if (not_voted.Count > 0 && votable.Privacy == Privacy.Public || User.User_Info.Role >= User.User_Role.moderator)
        {
            Text no_vote_list_text = Instantiate(bold_text_prefab, voter_list_parent).GetComponent <Text>();
            no_vote_list_text.color = Data_UI.color_not_answered(1);
            no_vote_list_text.text  = "Sin contestar:";

            no_vote_list_text = Instantiate(semibold_text_prefab, voter_list_parent).GetComponent <Text>();

            foreach (User.User_Information user in not_voted)
            {
                no_vote_list_text.text += " " + user.Name + ",";
            }

            if (no_vote_list_text.text.Length != 0)
            {
                no_vote_list_text.text = no_vote_list_text.text.Substring(0, no_vote_list_text.text.Length - 1);
            }
            else
            {
                no_vote_list_text.text = "";
            }
        }
    }
Exemple #13
0
        /// <summary>
        /// Casts a vote
        /// </summary>
        /// <param name="args"></param>
        /// <param name="api">API to use to vote</param>
        /// <param name="db">Optional DB to mark as Read</param>
        /// <returns>Throws exception on errors</returns>
        public static async Task Vote(ButtonClickedEventArgs args, IDevRantClient api, IPersistentDataStore db = null)
        {
            Vote vote = null;

            Votable votable = args.SelectedItem as Votable;

            if (votable.Voted == VoteState.Disabled)
            {
                return;
            }

            if (votable != null)
            {
                switch (args.Type)
                {
                case ButtonType.Down:
                    if (votable.Voted == VoteState.Down)
                    {
                        vote = Dtos.Vote.ClearVote();
                    }
                    else
                    {
                        var dlg = new DownvoteReasonWindow();
                        dlg.Topmost = true;
                        dlg.ShowDialog();

                        if (dlg.Reason != null)
                        {
                            vote = Dtos.Vote.DownVote(dlg.Reason.Value);
                        }
                        else
                        {
                            return;
                        }
                    }
                    break;

                case ButtonType.Up:
                    if (votable.Voted == VoteState.Up)
                    {
                        vote = Dtos.Vote.ClearVote();
                    }
                    else
                    {
                        vote = Dtos.Vote.UpVote();
                    }
                    break;
                }

                FeedItem item = args.SelectedItem as FeedItem;

                switch (args.SelectedItem.Type)
                {
                case FeedItem.FeedItemType.Post:
                    var rant = item.AsRant();

                    var r1 = await api.User.VoteRant(rant.ID, vote);

                    rant.Update(r1);
                    rant.Read = true;

                    if (db != null)
                    {
                        db.MarkRead(rant.ID);
                    }

                    break;

                case FeedItem.FeedItemType.Collab:
                    var collab = item.AsCollab();

                    var r2 = await api.User.VoteCollab(collab.ID, vote);

                    collab.Update(r2);
                    break;

                case FeedItem.FeedItemType.Comment:
                    var comment = item.AsComment();
                    var r3      = await api.User.VoteComment(comment.ID, vote);

                    comment.Update(r3);
                    break;
                }

                args.InvokeCallback();
            }
        }