public async Task ParticiparGrupoAsync(GrupoOferta grupoOferta, ParticipanteGrupo participanteGrupo)
        {
            participanteGrupo.IdGrupoOferta = grupoOferta.Id;
            participanteGrupo.NomeGrupo     = grupoOferta.Name;
            await participantesRepository.CreateEntityAsync(participanteGrupo);

            await participantesRepository.SyncDataBaseAsync();
        }
 private void AdicionarParticipante(ParticipanteGrupo participante)
 {
     if (Members.FirstOrDefault(x => participante.IdUser == x.IdUser) == null)
     {
         participante.NomeGrupo = Name;
         Members.Add(participante);
     }
     PersistGrupoOfertaCommand.ChangeCanExecute();
 }
        private async void ExecuteRemoverParticipanteSelecionadoAsync()
        {
            if (Members.Count > 1)
            {
                Members.Remove(participanteGrupoOferta);
                await grupoOfertaService.ExcluirParticipanteGrupoOfertaAsync(participanteGrupoOferta);

                participanteGrupoOferta = null;
                AtualizarStatus();
            }
        }
        internal async Task ExcluirParticipanteGrupoOfertaAsync(ParticipanteGrupo membro)
        {
            membro.Delete = true;
            await participantesRepository.UpdateEntityAsync(membro); //notify ser and delete on server

            await participantesRepository.SyncDataBaseAsync();

            await participantesRepository.DeleteEntityAsync(membro);

            await participantesRepository.SyncDataBaseAsync();
        }
        public IHttpActionResult IniciarEvento(Evento ev)
        {
            // Seleciona evento e altera status
            Evento evento = db.Eventos.Find(ev.codEvento);

            if (evento == null)
            {
                return(Content(HttpStatusCode.NotFound, new { message = "Evento não encontrado" }));
            }
            if (evento.codStatus == "E" && evento.codStatus == "F")
            {
                return(Content(HttpStatusCode.BadRequest, new { message = "Evento já em execução ou finalizado" }));
            }
            evento.codStatus       = "E";
            evento.data            = DateTime.Now;
            db.Entry(evento).State = EntityState.Modified;

            // Sorteia ordem
            IEnumerable <Grupo> grupos = db.Grupos
                                         .Where(g => g.codEvento == evento.codEvento)
                                         .OrderBy(x => Guid.NewGuid());

            if (grupos.Count() < 2)
            {
                return(Content(HttpStatusCode.BadRequest, new { message = "Evento não tem grupos suficientes para iniciar" }));
            }

            List <MasterEventosOrdem> retorno = new List <MasterEventosOrdem>();
            Byte i = 0;

            foreach (Grupo grupo in grupos)
            {
                ParticipanteGrupo pg = db.ParticipanteGrupos.Where(p => p.codGrupo == grupo.codGrupo).FirstOrDefault();
                if (pg == null)
                {
                    return(Content(HttpStatusCode.BadRequest, new { message = "Grupo não contém participantes" }));
                }

                MasterEventosOrdem ordem = new MasterEventosOrdem();
                ordem.codGrupo = grupo.codGrupo;
                ordem.ordem    = i;
                retorno.Add(ordem);
                db.MasterEventosOrdem.Add(ordem);
                i++;
            }

            db.SaveChanges();

            return(Ok(retorno));
        }
        private async void ExecuteStoreParticipanteAsync(ParticipanteGrupo participante)
        {
            if (CachedList.Count > 0)
            {//está pesquisando
                AdicionarParticipante(participante);
                await grupoOfertaService.ParticiparGrupoAsync(editGrupoOferta, Members.Last());

                CachedList.Add(participante);
                SearchText = string.Empty;
                //ExecuteSearchUser("");
                AtualizarStatus();
                return;
            }
            this.participanteGrupoOferta = participante;
            RemoverParticipanteSelecionadoCommand.ChangeCanExecute();
        }