public tblMatrizFuncXAtividades CreateMatriz(tblMatrizFuncXAtividades Matriz)
        {
            _db.tblMatrizFuncXAtividades.Add(Matriz);

            _db.SaveChanges();

            return(Matriz);
        }
        public tblMatrizFuncXAtividades UpdateMatriz(tblMatrizFuncXAtividades Matriz)
        {
            var matrizToUpdate = _db.tblMatrizFuncXAtividades.Find(Matriz.idMatrizFuncAtiv);

            matrizToUpdate.idFuncionario    = Matriz.idFuncionario;
            matrizToUpdate.idItemPerfil     = Matriz.idItemPerfil;
            matrizToUpdate.idAtividade      = Matriz.idAtividade;
            matrizToUpdate.idMatrizWorkzone = Matriz.idMatrizWorkzone;

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


            return(matrizToUpdate);
        }
        public void TransferirValoresMatrizTempToOficial(int WorkzoneID)
        {
            var exits      = _matrizService.GetMatrizByWZId(WorkzoneID);
            var matrizWz   = new tblMatrizWorkzone();
            var exitsMTemp = _matrizTempService.GetMatrizTempByWZId(WorkzoneID);

            //Se a matriz oficial do WZID existe -> deleta para criar uma nova
            // E deleta seus filhos tbm (Atividades e Treinamentos)
            if (exits != null)
            {
                _matrizFuncActivityService.DeleteMatrizAll(exits.idMatrizWZ);
                _matrizFuncTrainingService.DeleteMatrizAll(exits.idMatrizWZ);
            }



            // VERIFICA SE A MATRIZ TEMPORARIA POSSUI AVALIAÇÕES EM ATIVIDADE
            var avalAtiv = _matrizFuncActivityTempService.GetMatrizTempByIdMWZ(exitsMTemp.idMatrizWZTemp);

            tblMatrizFuncXAtividades        newAtivObj  = new tblMatrizFuncXAtividades();
            List <tblMatrizFuncXAtividades> newAtivList = new List <tblMatrizFuncXAtividades>();

            foreach (var aval in avalAtiv)
            {
                //var matrizOficialAtiv = _matrizFuncActivityService.GetMatrizByFuncXAtiv(exits.idMatrizWZ, aval.idAtividade, aval.idFuncionario);

                //if (matrizOficialAtiv == null)
                //{
                newAtivObj = new tblMatrizFuncXAtividades();

                newAtivObj.idAtividade      = aval.idAtividade;
                newAtivObj.idFuncionario    = aval.idFuncionario;
                newAtivObj.idItemPerfil     = aval.idItemPerfil;
                newAtivObj.cor              = aval.cor;
                newAtivObj.alocacaoForcada  = aval.alocacaoForcada;
                newAtivObj.idMatrizWorkzone = exits.idMatrizWZ;

                newAtivList.Add(newAtivObj);
                //}
            }

            //Cria todas as atividades e suas respectivas avaliações
            if (newAtivList.Count() > 0)
            {
                _matrizFuncActivityService.CreateAllMatriz(newAtivList);
            }


            // VERIFICA SE A MATRIZ TEMP POSSUI AVALIAÇÕES EM TREINAMENTOS
            var avalTrein = _matrizFuncTrainingTempService.GetMatrizTempByIdMWZ(exitsMTemp.idMatrizWZTemp);


            tblMatrizFuncXTreinamento        newTreinObj  = new tblMatrizFuncXTreinamento();
            List <tblMatrizFuncXTreinamento> newTreinList = new List <tblMatrizFuncXTreinamento>();

            foreach (var aval in avalTrein)
            {
                newTreinObj = new tblMatrizFuncXTreinamento();

                newTreinObj.idTreinamento    = aval.idTreinamento;
                newTreinObj.idFuncionario    = aval.idFuncionario;
                newTreinObj.idItemPerfil     = aval.idItemPerfil;
                newTreinObj.idMatrizWorkzone = exits.idMatrizWZ;

                newTreinList.Add(newTreinObj);
            }

            if (newTreinList.Count > 0)
            {
                _matrizFuncTrainingService.CreateAllMatriz(newTreinList);
            }
        }