public ActionResult Create(tblPerfilAtividadeXPerfilAtItem perfilAtivItemXPerfilItem)
        {
            var exits      = _perfilAtivItemXPerfilItem.checkIfPerfilAtivItemXPerfilItemAlreadyExits(perfilAtivItemXPerfilItem);
            var orderExits = _perfilAtivItemXPerfilItem.checkIfOrderAlreadyExits(perfilAtivItemXPerfilItem);


            if (ModelState.IsValid)
            {
                if (!exits && !orderExits)
                {
                    _perfilAtivItemXPerfilItem.CreatePerfilAtivItemXPerfilItem(perfilAtivItemXPerfilItem);
                    return(RedirectToAction("Index"));
                }
            }

            IEnumerable <tblPerfis>      activityProfile;
            IEnumerable <tblPerfilItens> profileItemActivity;

            activityProfile                 = _profileActivity.GetActivityProfiles();
            profileItemActivity             = _profileItemActivity.GetActivityProfileItems();
            ViewData["PerfilAtividade"]     = activityProfile;
            ViewData["PerfilAtividadeItem"] = profileItemActivity;

            if (orderExits)
            {
                ModelState.AddModelError("Ordem", "Ordem já existe");
            }
            else if (exits)
            {
                ModelState.AddModelError("idPerfilAtivItem", " Atividade Item já associada a Perfil Atividade");
            }


            return(View("Create"));
        }
        public ActionResult Edit(tblPerfilAtividadeXPerfilAtItem perfilAtivItemXPerfilItem)
        {
            // Verifica se ordem já existe
            var exits = _perfilAtivItemXPerfilItem.checkIfOrderAlreadyExits(perfilAtivItemXPerfilItem);

            if (ModelState.IsValid)
            {
                if (!exits)
                {
                    _perfilAtivItemXPerfilItem.UpdatePerfilAtivItemXPerfilItem(perfilAtivItemXPerfilItem);

                    return(RedirectToAction("Index"));
                }

                if (exits)
                {
                    ModelState.AddModelError("Ordem", "Ordem já existe");
                }

                return(View("Edit"));
            }

            IEnumerable <tblPerfis>      activityProfile;
            IEnumerable <tblPerfilItens> profileItemActivity;

            activityProfile     = _profileActivity.GetActivityProfiles();
            profileItemActivity = _profileItemActivity.GetActivityProfileItems();

            ViewData["PerfilAtividade"]     = activityProfile;
            ViewData["PerfilAtividadeItem"] = profileItemActivity;
            return(View(perfilAtivItemXPerfilItem));
        }
        //GET: Activity/Details/5
        //[AccessHelper(Menu = MenuHelper.Associacao,Screen = ScreensHelper.PerfilAtividadeItemXPerfilItem, Feature = FeaturesHelper.Editar)]
        public ActionResult Details(int idProfile)
        {
            // Declaração de variaveis
            tblPerfilAtividadeXPerfilAtItem profileXprofileItem = new tblPerfilAtividadeXPerfilAtItem();

            profileXprofileItem.idPerfilAtividade = idProfile;
            profileXprofileItem.tblPerfis         = _profileActivity.GetActivityProfileById(idProfile);


            IEnumerable <tblPerfilItens> profileItemList;
            IEnumerable <tblPerfilItens> profilesAdded;

            profileItemList = _profileItemActivity.GetActivityProfileItemsNotAssociated(idProfile);
            //Retorna todos os itens que fazem referencia ao Perfil chamado 'idProfile'
            profilesAdded = _perfilAtivItemXPerfilItem.SetUpPerfilItensLista(idProfile);

            ProfileItemListModel profileItem = new ProfileItemListModel();

            profileItem.idProfile        = idProfile;
            profileItem.ProfileItem      = profileItemList;
            profileItem.ProfileItemAdded = profilesAdded;
            profileItem.ProfileName      = _profileActivity.GetActivityProfileById(idProfile).Nome;
            UpdateModel(profileItem);



            return(View("Edit", profileXprofileItem));
        }
        public ActionResult Push(int idItem, int idProfile, int ordem = 0)
        {
            tblPerfilAtividadeXPerfilAtItem profileXprofileItem = new tblPerfilAtividadeXPerfilAtItem();

            profileXprofileItem.idPerfilAtividade = idProfile;
            profileXprofileItem.idPerfilAtivItem  = idItem;
            profileXprofileItem.Ordem             = ordem;

            ViewBag.ProfileName = _profileActivity.GetActivityProfileById(idProfile).Nome;


            var exits       = _perfilAtivItemXPerfilItem.checkIfPerfilAtivItemXPerfilItemAlreadyExits(profileXprofileItem);
            var ordemExists = _perfilAtivItemXPerfilItem.checkIfOrderAlreadyExits(profileXprofileItem);

            if (ModelState.IsValid && ordem != 0 && ordem.ToString().Length <= 4)
            {
                if (!exits && !ordemExists)
                {
                    _perfilAtivItemXPerfilItem.CreatePerfilAtivItemXPerfilItem(profileXprofileItem);

                    return(RedirectToAction("Details", new { idProfile = idProfile }));
                }
            }

            IEnumerable <tblPerfilItens> profileItemList;
            IEnumerable <tblPerfilItens> profilesAdded;

            profileItemList = _profileItemActivity.GetActivityProfileItems();
            //Retorna todos os itens que fazem referencia ao Perfil chamado 'idProfile'
            profilesAdded = _perfilAtivItemXPerfilItem.SetUpPerfilItensLista(idProfile);

            ProfileItemListModel profileItem = new ProfileItemListModel();

            profileItem.idProfile        = idProfile;
            profileItem.ProfileItem      = profileItemList;
            profileItem.ProfileItemAdded = profilesAdded;
            profileItem.ProfileName      = _profileActivity.GetActivityProfileById(idProfile).Nome;

            /*GERANDO MENSAGENS DE VALIDAÇÃO*/
            if (exits)
            {
                ModelState.AddModelError("idPerfilAtividade", "Perfil já associado a esse item");
            }
            if (ordemExists)
            {
                ModelState.AddModelError("Ordem", "Ordem já existente");
            }
            if (ordem == 0)
            {
                ModelState.AddModelError("Ordem", "Ordem deve ser preenchida(apenas números)");
            }
            if (ordem.ToString().Length > 4)
            {
                ModelState.AddModelError("Ordem", "Ordem deve ter no máximo 4 digitos");
            }
            return(View("Edit", profileXprofileItem));
        }
        public tblPerfilAtividadeXPerfilAtItem CreatePerfilAtivItemXPerfilItem(tblPerfilAtividadeXPerfilAtItem PerfilAtivItemXPerfilItem)
        {
            _db.tblPerfilAtividadeXPerfilAtItem.Add(PerfilAtivItemXPerfilItem);

            _db.SaveChanges();


            return(PerfilAtivItemXPerfilItem);
        }
        public bool checkIfOrderAlreadyExits(tblPerfilAtividadeXPerfilAtItem PerfilAtivItemXPerfilItem)
        {
            var query = from f in _db.tblPerfilAtividadeXPerfilAtItem
                        where f.Ordem == PerfilAtivItemXPerfilItem.Ordem &&
                        f.idPerfilAtividade == PerfilAtivItemXPerfilItem.idPerfilAtividade
                        select f;

            if (query.Count() == 1)
            {
                return(true);
            }

            return(false);
        }
        public tblPerfilAtividadeXPerfilAtItem UpdatePerfilAtivItemXPerfilItem(tblPerfilAtividadeXPerfilAtItem PerfilAtivItemXPerfilItem)
        {
            var PerfilAtivItemXPerfilItemToUpdate =
                from f in _db.tblPerfilAtividadeXPerfilAtItem
                where f.idPerfilAtividade == PerfilAtivItemXPerfilItem.idPerfilAtividade &&
                f.idPerfilAtivItem == PerfilAtivItemXPerfilItem.idPerfilAtivItem
                orderby f.idPerfilAtividade ascending
                select f;
            var AuxPAIXPI = PerfilAtivItemXPerfilItemToUpdate.FirstOrDefault();

            AuxPAIXPI.idPerfilAtivItem  = PerfilAtivItemXPerfilItem.idPerfilAtivItem;
            AuxPAIXPI.idPerfilAtividade = PerfilAtivItemXPerfilItem.idPerfilAtividade;
            AuxPAIXPI.Ordem             = PerfilAtivItemXPerfilItem.Ordem;


            _db.Entry(AuxPAIXPI).State = EntityState.Modified;
            _db.SaveChanges();


            return(PerfilAtivItemXPerfilItemToUpdate.FirstOrDefault());
        }