public tblMatrizWorkzoneTemp UpdateMatrizTemp(tblMatrizWorkzoneTemp MatrizTemp)
        {
            var matrizToUpdateTemp = _db.tblMatrizWorkzoneTemp.Find(MatrizTemp.idMatrizWZTemp);

            matrizToUpdateTemp.idWorkzone  = MatrizTemp.idWorkzone;
            matrizToUpdateTemp.Usuario     = MatrizTemp.Usuario;
            matrizToUpdateTemp.DataCriacao = MatrizTemp.DataCriacao;

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


            return(matrizToUpdateTemp);
        }
        public tblMatrizWorkzoneTemp CreateMatrizTemp(tblMatrizWorkzoneTemp MatrizTemp)
        {
            var exist = GetMatrizTempByWZId(MatrizTemp.idWorkzone);

            if (exist == null)
            {
                _db.tblMatrizWorkzoneTemp.Add(MatrizTemp);

                _db.SaveChanges();

                var matrizCreated = _db.tblMatrizWorkzoneTemp
                                    .OrderByDescending(w => w.DataCriacao)
                                    .FirstOrDefault();

                return(matrizCreated);
            }
            else
            {
                return(exist);
            }
        }
        public ActionResult CreateMatrizActivity(int idFuncionario, int idActivity, int idWorkzone, string cor, string alocacaoForcada, int idItem = 0)
        {
            ViewBag.userId = idFuncionario;
            CookieHelper.Set("userId", idFuncionario.ToString());

            if (idItem == 0)
            {
                return(RedirectToAction("MatrizTemp", new { WorkzoneID = idWorkzone }));
            }

            var username = "";

            try
            {
                username = AuthorizationHelper.GetSystem().Usuario.ChaveAmericas;
            }
            catch
            {
                username = "";
            }

            tblMatrizWorkzoneTemp matrizXworzoneTemp = new tblMatrizWorkzoneTemp();

            matrizXworzoneTemp.Usuario     = username;
            matrizXworzoneTemp.DataCriacao = DateTime.Now;

            var MatrizExists    = _matrizTempService.GetMatrizTempByWZId(idWorkzone);
            var idMatriz        = 0;
            var avaliationExist = _matrizFuncActivityTempService.GetMatrizTempByFuncXAtiv(MatrizExists.idMatrizWZTemp, idActivity, idFuncionario);

            if (MatrizExists == null)
            {
                idMatriz = _matrizTempService.CreateMatrizTemp(matrizXworzoneTemp).idMatrizWZTemp;
            }

            else
            {
                idMatriz = MatrizExists.idMatrizWZTemp;
            }


            var WorkzoneID = idWorkzone;
            tblMatrizFuncXAtividadesTemp matrizFuncActiv = new tblMatrizFuncXAtividadesTemp();

            matrizFuncActiv.idFuncionario        = idFuncionario;
            matrizFuncActiv.idItemPerfil         = idItem;
            matrizFuncActiv.idMatrizWorkzoneTemp = idMatriz;
            matrizFuncActiv.idAtividade          = idActivity;
            matrizFuncActiv.alocacaoForcada      = alocacaoForcada;
            matrizFuncActiv.cor = cor;

            if (avaliationExist == null)
            {
                _matrizFuncActivityTempService.CreateMatrizTemp(matrizFuncActiv);
            }

            else
            {
                matrizFuncActiv.idMatrizFuncAtivTemp = avaliationExist.idMatrizFuncAtivTemp;
                _matrizFuncActivityTempService.UpdateMatrizTemp(matrizFuncActiv);
            }

            var workzone = _workzone.GetWorkzoneById(WorkzoneID);

            Console.WriteLine("idActivity: {0}, idItem: {1}, idFuncionario: {2}", idActivity, idItem, idFuncionario);

            SetColor(idFuncionario, idActivity, idWorkzone);

            return(RedirectToAction("MatrizTemp", new { WorkzoneID = idWorkzone }));
        }
        public ActionResult CreateMatrizTraining(int idFuncionario, int idTraining, int idWorkzone, int idItem = 0)
        {
            ViewBag.userId = idFuncionario;
            CookieHelper.Set("userId", idFuncionario.ToString());

            if (idItem == 0)
            {
                return(RedirectToAction("MatrizTemp", new { WorkzoneID = idWorkzone }));
            }

            var username = "";

            try
            {
                username = AuthorizationHelper.GetSystem().Usuario.ChaveAmericas;
            }
            catch
            {
                username = "";
            }

            tblMatrizWorkzoneTemp matrizXworzoneTemp = new tblMatrizWorkzoneTemp();

            matrizXworzoneTemp.Usuario     = username;
            matrizXworzoneTemp.DataCriacao = DateTime.Now;

            var MatrizExists    = _matrizTempService.GetMatrizTempByWZId(idWorkzone);
            var idMatriz        = 0;
            var avaliationExist = _matrizFuncTrainingTempService.GetMatrizTempByFuncXTrain(idTraining, idFuncionario);

            if (MatrizExists == null)
            {
                idMatriz = _matrizTempService.CreateMatrizTemp(matrizXworzoneTemp).idMatrizWZTemp;
            }

            else
            {
                idMatriz = MatrizExists.idMatrizWZTemp;
            }


            var WorkzoneID = idWorkzone;
            tblMatrizFuncXTreinamentoTemp matrizFuncTrain = new tblMatrizFuncXTreinamentoTemp();

            matrizFuncTrain.idFuncionario        = idFuncionario;
            matrizFuncTrain.idItemPerfil         = idItem;
            matrizFuncTrain.idMatrizWorkzoneTemp = idMatriz;
            matrizFuncTrain.idTreinamento        = idTraining;

            if (avaliationExist == null)
            {
                _matrizFuncTrainingTempService.CreateMatrizTemp(matrizFuncTrain);
            }

            else
            {
                matrizFuncTrain.idMatrizFuncTreinTemp = avaliationExist.idMatrizFuncTreinTemp;
                _matrizFuncTrainingTempService.UpdateMatriz(matrizFuncTrain);
            }

            var workzone = _workzone.GetWorkzoneById(WorkzoneID);

            Console.WriteLine("idTraining: {0}, idItem: {1}, idFuncionario: {2}", idTraining, idItem, idFuncionario);

            return(RedirectToAction("MatrizTemp", new { WorkzoneID = idWorkzone }));
        }
        public ActionResult Matriz(int WorkzoneID, bool catchValueFromOficial = true)
        {
            CookieHelper.Delete("userId");
            var workzone = _workzone.GetWorkzoneById(WorkzoneID);

            try
            {
                //Veriica se o cara possui permissão para acessar a matriz de acordo com o CC
                //if (!AllowCC(workzone.idCC))
                //{
                //    //Response.Write("<script>alert('Sem acesso a esta tela. Verificar CC cadastrado no AutSis');</script>");
                //    //Thread.Sleep(3000);
                //    return RedirectToAction("Index", new { error = true });
                //}

                // DESCOMENTA ESSA LINHA DE CIMAAAAAAAAAAAAA DEPOIS
                SetImage();

                var exits        = _matrizService.GetMatrizByWZId(WorkzoneID);
                var matrizWz     = new tblMatrizWorkzone();
                var matrizWzTemp = new tblMatrizWorkzoneTemp();
                matrizWz.idMatrizWZ         = 0;
                matrizWzTemp.idMatrizWZTemp = 0;

                //VERIFICA SE A MATRIZ TEMPORÁRIA ESTÁ LIMPA
                var matrizTemp = _matrizTempService.GetMatrizTempByWZId(WorkzoneID);
                if (matrizTemp != null)
                {
                    _matrizFuncActivityTempService.DeleteMatrizTempAll(matrizTemp.idMatrizWZTemp);
                    _matrizFuncTrainingTempService.DeleteMatrizTempAll(matrizTemp.idMatrizWZTemp);
                    _matrizTempService.DeleteMatrizTemp(matrizTemp.idMatrizWZTemp);
                }


                if (exits == null)
                {
                    var username = "";
                    try
                    {
                        username = AuthorizationHelper.GetSystem().Usuario.ChaveAmericas;
                    }
                    catch
                    {
                        username = "";
                    }
                    // CRIA MATRIZ OFICIAL SE ELA N EXISTIR
                    tblMatrizWorkzone matrizXworzoneTemp = new tblMatrizWorkzone();
                    matrizXworzoneTemp.Usuario     = username;
                    matrizXworzoneTemp.DataCriacao = DateTime.Now;
                    matrizXworzoneTemp.idWorkzone  = WorkzoneID;
                    matrizWz = _matrizService.CreateMatriz(matrizXworzoneTemp);
                }
                else
                {
                    matrizWz = exits;
                }
                var exitsMTemp = _matrizTempService.GetMatrizTempByWZId(WorkzoneID);

                if (exitsMTemp == null)
                {
                    var username = "";
                    try
                    {
                        username = AuthorizationHelper.GetSystem().Usuario.ChaveAmericas;
                    }
                    catch
                    {
                        username = "";
                    }

                    // CRIA MATRIZ TEMPORÁRIA ONDE A EDIÇÃO SERÁ FEITA
                    tblMatrizWorkzoneTemp matrizXworzoneTempTemp = new tblMatrizWorkzoneTemp();
                    matrizXworzoneTempTemp.Usuario     = username;
                    matrizXworzoneTempTemp.DataCriacao = DateTime.Now;
                    matrizXworzoneTempTemp.idWorkzone  = WorkzoneID;
                    matrizWzTemp = _matrizTempService.CreateMatrizTemp(matrizXworzoneTempTemp);
                    exitsMTemp   = _matrizTempService.GetMatrizTempByWZId(WorkzoneID);

                    // VERIFICA SE A MATRIZ POSSUI AVALIAÇÕES EM ATIVIDADE
                    var avalAtiv = _matrizFuncActivityService.GetMatrizByMWZId(matrizWz.idMatrizWZ);
                    var idsActv  = new List <int>();

                    if (avalAtiv.Count() > 0)
                    {
                        tblMatrizFuncXAtividadesTemp newAvalObj = new tblMatrizFuncXAtividadesTemp();
                        var existInActivityAssociation          = _workzoneXActivity.GetWorzoneXActivityListByIdWz(matrizWz.idWorkzone);

                        foreach (var aval in avalAtiv)
                        {
                            if (existInActivityAssociation.Where(a => a.tblAtividades.idAtividade == aval.idAtividade) != null)
                            {
                                newAvalObj = new tblMatrizFuncXAtividadesTemp();

                                newAvalObj.idAtividade          = aval.idAtividade;
                                newAvalObj.idFuncionario        = aval.idFuncionario;
                                newAvalObj.idItemPerfil         = aval.idItemPerfil;
                                newAvalObj.idMatrizWorkzoneTemp = matrizWzTemp.idMatrizWZTemp;

                                _matrizFuncActivityTempService.CreateMatrizTemp(newAvalObj);
                            }
                            else
                            {
                                idsActv.Add(aval.idAtividade);
                            }
                        }
                    }


                    // VERIFICA SE A MATRIZ POSSUI AVALIAÇÕES EM TREINAMENTOS
                    var avalTrein = _matrizFuncTrainingService.GetMatrizByIdMWZ(matrizWz.idMatrizWZ);

                    if (avalTrein.Count() > 0)
                    {
                        tblMatrizFuncXTreinamentoTemp newTreinObj = new tblMatrizFuncXTreinamentoTemp();


                        foreach (var aval in avalTrein)
                        {
                            var training = _training.GetTrainingById(aval.idTreinamento);
                            var existTrainingInAssociation = true;

                            //VERIFICA SE AQUELE TREINAMENTO[N] QUE POSSUI AVALIAÇÃO EXISTE AINDA NA ASSOCIAÇÃO
                            // OU SE FOI DESASSOCIADO
                            foreach (var id in idsActv)
                            {
                                var returned = training.tblAtividadeXTreinamentos.Where(a => a.tblAtividades.idAtividade == id);
                                if (returned.Count() > 0)
                                {
                                    existTrainingInAssociation = true;
                                }
                            }

                            if (idsActv.Count == 0)
                            {
                                existTrainingInAssociation = true;
                            }

                            if (existTrainingInAssociation)
                            {
                                newTreinObj = new tblMatrizFuncXTreinamentoTemp();

                                newTreinObj.idTreinamento        = aval.idTreinamento;
                                newTreinObj.idFuncionario        = aval.idFuncionario;
                                newTreinObj.idItemPerfil         = aval.idItemPerfil;
                                newTreinObj.idMatrizWorkzoneTemp = matrizWzTemp.idMatrizWZTemp;

                                _matrizFuncTrainingTempService.CreateMatrizTemp(newTreinObj);
                            }
                        }
                    }
                }

                var activiesList = _workzoneXActivity.SetUpActivitiesList(WorkzoneID);
                List <tblTreinamento>     trainingList = new List <tblTreinamento>();
                List <tblTipoTreinamento> ttList       = new List <tblTipoTreinamento>();


                // OBTER TODAS OS TREINAMENTOS DE TODAS ATIVIDADES DA ZONA
                // E OS SEUS TIPOS
                foreach (var aList in activiesList)
                {
                    //Pega todos IDs de atividades associados a treinamentos DA ZONA
                    foreach (var aXt in aList.tblAtividadeXTreinamentos.OrderBy(t => t.tblTreinamento.idTipoTreinamento))
                    {
                        var x = aList.tblAtividadeXTreinamentos.OrderBy(t => t.tblTreinamento.idTipoTreinamento);

                        var aux = _training.GetTrainingById(aXt.idTreinamento);


                        //Verifica se o treinamento já existe na Lista
                        if (trainingList.Exists(t => t.IdTreinamento == aux.IdTreinamento) == false)
                        {
                            trainingList.Add(aux);
                        }

                        if (ttList.Exists(t => t.IdTipoTreinamento == aux.tblTipoTreinamento.IdTipoTreinamento) == false)
                        {
                            ttList.Add(aux.tblTipoTreinamento);
                        }
                    }
                }

                if (activiesList.Count() > 0 && trainingList.Count() > 0 && workzone.tblWorkzoneXFuncionario.Count() > 0)
                {
                    ViewBag.show = true;
                }
                else
                {
                    ViewBag.show = false;
                }

                ViewBag.trainingList  = trainingList.OrderBy(t => t.idTipoTreinamento);
                ViewBag.activiesList  = activiesList;
                ViewBag.ttList        = ttList.OrderBy(t => t.IdTipoTreinamento);
                ViewBag.tListCount    = trainingList.Count();
                ViewBag.activiesCount = activiesList.Count();
                ViewBag.ttListCount   = ttList.Count();
                ViewBag.MWZID         = matrizWz.idMatrizWZ;
            }
            catch (Exception ex)
            {
                log.Debug(ex.Message.ToString());
            }

            return(View("Matriz", workzone));
        }