Esempio n. 1
0
        public ActionResult Create()
        {
            WorkerTypeEntity workerType = new WorkerTypeEntity();

            ViewBag.Profiles = GetProfilesToSelect(new Profiles());

            return(PartialView("_Edit", workerType));
        }
Esempio n. 2
0
        public ActionResult Edit(int workerTypeId)
        {
            WorkerTypeEntity workerType = WorkerTypeRepository.Instance.GetById(workerTypeId);

            ViewBag.Profiles = GetProfilesToSelect(workerType.ProfileName);

            return(PartialView("_Edit", workerType));
        }
Esempio n. 3
0
        public ActionResult Save(WorkerTypeEntity entity)
        {
            try
            {
                using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
                {
                    ViewBag.Profiles = GetProfilesToSelect(entity.ProfileName);

                    if (ModelState.IsValid)
                    {
                        if (entity.Id > 0)
                        {
                            entity.Status         = GenericStatus.ACTIVE;
                            entity.FirmId         = CurrentFirm.Id;
                            entity.ExternalFirmId = CurrentFirm.ExternalId;
                            entity.UpdatedBy      = CurrentUserId;

                            ValidateModel(entity);

                            WorkerTypeRepository.Instance.UpdateWorkerType(entity);

                            Success("Função atualizada com sucesso.");
                            scope.Complete();
                        }
                        else
                        {
                            entity.Status         = GenericStatus.ACTIVE;
                            entity.FirmId         = CurrentFirm.Id;
                            entity.ExternalFirmId = CurrentFirm.ExternalId;
                            entity.UpdatedBy      = CurrentUserId;

                            ValidateModel(entity);

                            WorkerTypeRepository.Instance.CreateWorkerType(entity);

                            Success("Função criada com sucesso.");
                            scope.Complete();
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("", "Alguns campos são obrigatórios para salvar a Função.");

                        return(PartialView("_Edit", entity));
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);

                ModelState.AddModelError("", "Ocorreu um erro ao tentar salvar a Função.");

                return(PartialView("_Edit", entity));
            }

            return(new EmptyResult());
        }
Esempio n. 4
0
        public ActionResult Index(string filter)
        {
            WorkerTypeEntity currentWorkerType = WorkerTypeRepository.Instance.GetById(CurrentWorker.WorkerTypeId);

            List <TeamEntity> teams = new List <TeamEntity>();

            var teamsRtn = new List <TeamEntity>();

            if (currentWorkerType.ProfileName.Equals("ADMINISTRADOR"))
            {
                //teams = TeamRepository.Instance.GetAllFromWorker(CurrentWorker.Id, CurrentFirm.Id);

                List <TeamEntity> teamsToAdd = TeamRepository.Instance.GetAllEntityFromFirm(CurrentFirm.Id);

                if (teamsToAdd != null)
                {
                    teams.AddRange(teamsToAdd);
                }
            }
            else if (currentWorkerType.ProfileName.Equals("LIDER"))
            {
                //teams = TeamRepository.Instance.GetAllFromWorker(CurrentWorker.Id, CurrentFirm.Id);

                List <TeamEntity> teamsToAdd = TeamRepository.Instance.GetBySponsor(CurrentFirm.Id);

                if (teamsToAdd != null)
                {
                    teams.AddRange(teamsToAdd);
                }
            }
            else
            {
                //teams = TeamRepository.Instance.GetAllFromWorker(CurrentWorker.Id, CurrentFirm.Id);
            }

            filter = filter.ToLowerInvariant().Trim();

            if (!string.IsNullOrWhiteSpace(filter))
            {
                var temp = from n in teams
                           where (n.TeamName.ToLowerInvariant().Trim().Contains(filter))
                           select n;

                teamsRtn = temp.ToList();
            }
            else
            {
                teamsRtn = teams;
            }

            ViewBag.Filter = filter;

            TeamEntity team = new TeamEntity();

            ViewBag.Team = team;

            return(View(teamsRtn));
        }
Esempio n. 5
0
        private AuthStatus LoginGeral(LoginViewModel model)
        {
            AuthResult result = new AuthResult();

            if (!ModelState.IsValid)
            {
                return(AuthStatus.ERROR);
            }

            result = AccountHandler.Login(new LoginRequest()
            {
                UserName    = model.Email,
                Password    = model.Password,
                TokenMobile = model.tokenMobile,
                Device      = model.tipoDispositivo
            });

            WorkerEntity worker = WorkerRepository.Instance.GetByUserId(result.UserId);

            if (result.AuthStatus == AuthStatus.OK)
            {
                var claims = new List <Claim>();
                claims.Add(new Claim(ClaimTypes.Sid, result.UserId.ToString()));
                claims.Add(new Claim(ClaimTypes.Name, result.UserId.ToString()));
                claims.Add(new Claim(ClaimTypes.Email, model.Email));
                claims.Add(new Claim(ClaimTypes.NameIdentifier, result.UserId.ToString()));
                claims.Add(new Claim("http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider", "http://vlast.com.br"));

                bool isSystemAdmin = false;
                foreach (var role in result.UserRoles)
                {
                    if (role == Roles.ADMINISTRATOR)
                    {
                        isSystemAdmin = true;
                    }

                    claims.Add(new Claim(ClaimTypes.Role, role.ToString()));
                }


                if (!isSystemAdmin)
                {
                    //WorkerEntity worker = WorkerRepository.Instance.GetByUserId(result.UserId);
                    WorkerTypeEntity profile = WorkerTypeRepository.Instance.GetById(worker.WorkerTypeId);
                    claims.Add(new Claim(ClaimTypes.Role, profile.ProfileName.ToString()));
                }

                var identity = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);

                var ctx = Request.GetOwinContext();
                var authenticationManager = ctx.Authentication;
                authenticationManager.SignIn(identity);

                return(AuthStatus.OK);
            }

            return(AuthStatus.ERROR);
        }
Esempio n. 6
0
 public ImplantationDTO()
 {
     Episode    = new EpisodeEngineDTO();
     WorkerType = new WorkerTypeEntity();
     Worker     = new WorkerDTO();
     Team       = new TeamEngineDTO();
     Metric     = new MetricEngineDTO();
     Goal       = new List <GoalEngineDTO>();
 }
Esempio n. 7
0
 /// <summary>
 /// Salva um tipo de funcionario na base de dados
 /// </summary>
 /// <param name="newEntity"></param>
 /// <returns></returns>
 public WorkerTypeEntity CreateWorkerType(WorkerTypeEntity newEntity)
 {
     using (ModelContext context = new ModelContext())
     {
         newEntity.LastUpdate = DateTime.UtcNow;
         context.WorkerTypes.Attach(newEntity);
         context.Entry(newEntity).State = System.Data.Entity.EntityState.Added;
         context.SaveChanges();
     }
     return(newEntity);
 }
Esempio n. 8
0
        /// <summary>
        /// Atualiza um tipo de funcionario
        /// </summary>
        /// <param name="updatedEntity"></param>
        /// <returns></returns>
        public WorkerTypeEntity UpdateWorkerType(WorkerTypeEntity updatedEntity)
        {
            using (ModelContext context = new ModelContext())
            {
                updatedEntity.LastUpdate = DateTime.UtcNow;
                context.WorkerTypes.Attach(updatedEntity);
                context.Entry(updatedEntity).State = System.Data.Entity.EntityState.Modified;
                context.SaveChanges();
            }

            return(updatedEntity);
        }
Esempio n. 9
0
        public ActionResult Edit(int workerId)
        {
            WorkerDTO        worker       = WorkerRepository.Instance.GetDTOById(workerId);
            PlayerEngineDTO  workerEngine = PlayerEngineService.Instance.GetById(worker.ExternalId);
            WorkerTypeEntity workerType   = WorkerTypeRepository.Instance.GetById(worker.WorkerTypeId);

            worker.Role        = workerType.ProfileName.ToString();
            worker.ProfileName = workerType.ProfileName;

            worker.TotalXp = (int)workerEngine.Xp;

            ViewBag.Types = GetWorkerTypesToSelect(worker.WorkerTypeId);

            return(PartialView("_Edit", worker));
        }
Esempio n. 10
0
        public ActionResult Remove(int workerTypeId)
        {
            List <WorkerEntity> worker = WorkerRepository.Instance.GetAllByWorkerType(workerTypeId);

            if (worker.Count > 0)
            {
                Error("Existem funcionários vinculados a essa função, não é possível excluir nesse caso.");
            }
            else
            {
                WorkerTypeEntity workerType = WorkerTypeRepository.Instance.GetById(workerTypeId);

                workerType.Status = GenericStatus.INACTIVE;

                WorkerTypeRepository.Instance.UpdateWorkerType(workerType);
            }

            ViewBag.NumberOfWorkerTypes = WorkerTypeRepository.Instance.GetCountFromFirm(CurrentFirm.ExternalId);

            return(View("Index"));
        }
Esempio n. 11
0
        public ActionResult SaveWorkersArchive(HttpPostedFileBase workersArchive)
        {
            try
            {
                string gameId = CurrentFirm.ExternalId;

                workersArchive.SaveAs(Path.Combine(Server.MapPath("~/App_Data"), workersArchive.FileName));

                string path = Path.Combine(Server.MapPath("~/App_Data"), workersArchive.FileName);

                var archive = new ExcelQueryFactory(path);

                var rows = from x in archive.WorksheetRange("A1", "E" + rowsCount, "Workers")
                           select x;

                foreach (var row in rows)
                {
                    if (!string.IsNullOrWhiteSpace(row[0].ToString()) && !string.IsNullOrWhiteSpace(row[1].ToString()) && !string.IsNullOrWhiteSpace(row[2].ToString()) && !string.IsNullOrWhiteSpace(row[4].ToString()))
                    {
                        NewRequest request = new NewRequest();

                        AuthResult result = new AuthResult();

                        request.Cpf      = row[3].ToString();
                        request.Name     = row[0].ToString();
                        request.Phone    = row[2].ToString();
                        request.Password = "******";
                        request.Email    = row[1].ToString();
                        request.Username = row[1].ToString();

                        result = AccountHandler.CreateFirmUser(request, Roles.WORKER);

                        WorkerTypeEntity workerType = WorkerTypeRepository.Instance.GetByGameIdAndTypeName(gameId, row[4].ToString());

                        if (AuthStatus.OK.Equals(result.AuthStatus))
                        {
                            WorkerEntity worker = new WorkerEntity();

                            worker.Status         = GenericStatus.ACTIVE;
                            worker.FirmId         = CurrentFirm.Id;
                            worker.UserId         = result.UserId;
                            worker.ExternalFirmId = CurrentFirm.ExternalId;
                            worker.WorkerTypeId   = workerType.Id;
                            worker.UpdatedBy      = CurrentUserId;

                            ValidateModel(worker);

                            PlayerEngineDTO dto = new PlayerEngineDTO
                            {
                                Level    = 1,
                                Xp       = 1,
                                Nick     = request.Name,
                                Role     = workerType.ProfileName.ToString(),
                                GameId   = worker.ExternalFirmId,
                                LogoId   = worker.LogoId,
                                Cpf      = request.Cpf,
                                Email    = request.Email,
                                LogoPath = CurrentURL + worker.LogoId,
                                Active   = true
                            };

                            dto = PlayerEngineService.Instance.CreateOrUpdate(dto);

                            worker.ExternalId = dto.Id;

                            worker = WorkerRepository.Instance.CreateWorker(worker);
                        }
                    }
                }

                Success("Funcionários criados com sucesso.");
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);

                ModelState.AddModelError("", "Ocorreu um erro ao tentar salvar os funcionários via arquivo.");

                return(PartialView("_WorkersArchive"));
            }

            return(new EmptyResult());
        }
Esempio n. 12
0
        public ActionResult Save(WorkerDTO entity, HttpPostedFileBase logoUpload)
        {
            try
            {
                using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
                {
                    if (ModelState.IsValid)
                    {
                        ImageEntity imageSaving = new ImageEntity();
                        if (logoUpload != null && logoUpload.ContentLength > 0)
                        {
                            imageSaving.Status    = GenericStatus.ACTIVE;
                            imageSaving.UpdatedBy = CurrentUserId;

                            byte[] cover = null;
                            using (var memoryStream = new MemoryStream())
                            {
                                logoUpload.InputStream.CopyTo(memoryStream);
                                if (memoryStream.Length > 0)
                                {
                                    using (Image image = Bitmap.FromStream(memoryStream))
                                    {
                                        logoUpload.InputStream.CopyTo(memoryStream);
                                        if (memoryStream.Length > 0)
                                        {
                                            cover = memoryStream.ToArray();
                                        }
                                    }
                                }
                            }

                            //if (entity.LogoId > 0)
                            {
                                //imageSaving.Id = entity.LogoId;
                            }
                            //else
                            {
                                imageSaving = ImageRepository.Instance.CreateImage(imageSaving);
                            }

                            ImageRepository.Instance.SaveOrReplaceLogo(imageSaving.Id, cover);

                            entity.LogoId = imageSaving.Id;
                        }

                        if (entity.IdWorker > 0)
                        {
                            PlayerEngineDTO  player     = PlayerEngineService.Instance.GetById(entity.ExternalId);
                            WorkerTypeEntity workerType = WorkerTypeRepository.Instance.GetById(entity.WorkerTypeId);

                            UserProfileEntity userProfile = new UserProfileEntity();

                            userProfile.Id    = entity.IdUser;
                            userProfile.Name  = entity.Name;
                            userProfile.Email = entity.Email;
                            userProfile.CPF   = entity.Cpf.Replace(".", "").Replace("-", "");
                            userProfile.Phone = entity.Phone;

                            ValidateModel(userProfile);

                            WorkerEntity worker = new WorkerEntity();

                            worker.Status         = GenericStatus.ACTIVE;
                            worker.FirmId         = CurrentFirm.Id;
                            worker.ExternalFirmId = CurrentFirm.ExternalId;
                            worker.WorkerTypeId   = entity.WorkerTypeId;
                            worker.UserId         = entity.IdUser;
                            worker.Id             = entity.IdWorker;
                            worker.LogoId         = entity.LogoId;
                            worker.UpdatedBy      = CurrentUserId;
                            worker.ExternalId     = player.Id;

                            ValidateModel(worker);

                            WorkerRepository.Instance.UpdateWorker(worker);

                            UserProfileRepository.Instance.UpdateUserProfile(userProfile);

                            UserAccountEntity acc = AccountRepository.Instance.GetById(entity.IdUser);

                            acc.UserName = userProfile.Email;

                            AccountRepository.Instance.Update(acc);

                            player.Nick     = userProfile.Name;
                            player.Role     = workerType.ProfileName.ToString();
                            player.LogoId   = worker.LogoId;
                            player.Xp       = entity.TotalXp;
                            player.Email    = entity.Email;
                            player.Cpf      = entity.Cpf;
                            player.LogoPath = CurrentURL + player.LogoId;
                            player.Active   = true;
                            player.GameId   = CurrentFirm.ExternalId;
                            PlayerEngineService.Instance.CreateOrUpdate(player);

                            Success("Funcionário atualizado com sucesso.");
                            scope.Complete();
                        }
                        else
                        {
                            WorkerTypeEntity workerType = WorkerTypeRepository.Instance.GetById(entity.WorkerTypeId);

                            NewRequest request = new NewRequest();
                            AuthResult result  = new AuthResult();

                            request.Cpf      = entity.Cpf.Replace("-", "").Replace(".", "");
                            request.Name     = entity.Name;
                            request.Phone    = entity.Phone;
                            request.Email    = entity.Email;
                            request.Username = entity.Email;
                            request.Password = request.Cpf;

                            result = AccountHandler.CreateFirmUser(request, Roles.WORKER);

                            if (!AuthStatus.OK.Equals(result.AuthStatus))
                            {
                                Error(AccountHelper.HandleError(result));

                                ViewBag.Types = GetWorkerTypesToSelect(entity.WorkerTypeId);

                                ModelState.AddModelError("", "Ocorreu um erro ao salvar o funcionário.");

                                return(PartialView("_Edit", entity));
                            }

                            WorkerEntity worker = new WorkerEntity();

                            worker.Status         = GenericStatus.ACTIVE;
                            worker.FirmId         = CurrentFirm.Id;
                            worker.ExternalFirmId = CurrentFirm.ExternalId;
                            worker.UserId         = result.UserId;
                            worker.WorkerTypeId   = entity.WorkerTypeId;
                            worker.LogoId         = entity.LogoId;
                            worker.UpdatedBy      = CurrentUserId;

                            ValidateModel(worker);

                            PlayerEngineDTO player = PlayerEngineService.Instance.CreateOrUpdate(
                                new PlayerEngineDTO
                            {
                                GameId   = worker.ExternalFirmId,
                                Nick     = request.Name,
                                Role     = workerType.ProfileName.ToString(),
                                Level    = 1,
                                LogoId   = worker.LogoId,
                                Cpf      = entity.Cpf.Replace(".", "").Replace("-", ""),
                                Email    = entity.Email,
                                Xp       = 1,
                                LogoPath = CurrentURL + worker.LogoId,
                                Active   = true
                            });

                            worker.ExternalId = player.Id;

                            WorkerRepository.Instance.CreateWorker(worker);

                            Success("Funcionário criado com sucesso.");
                            scope.Complete();
                        }
                    }
                    else
                    {
                        ViewBag.Types = GetWorkerTypesToSelect(entity.WorkerTypeId);

                        ModelState.AddModelError("", "Alguns campos são obrigatórios para salvar o funcionário.");

                        return(PartialView("_Edit", entity));
                    }
                }
            }
            catch (Exception ex)
            {
                Error("Houve um erro ao salvar funcionário.");

                Logger.LogException(ex);

                ModelState.AddModelError("", "Ocorreu um erro ao tentar salvar o funcionário.");

                ViewBag.Types = GetWorkerTypesToSelect(entity.WorkerTypeId);

                return(PartialView("_Edit", entity));
            }

            return(new EmptyResult());
        }
Esempio n. 13
0
        public ActionResult Search(JQueryDataTableRequest jqueryTableRequest, string episodeId, string teamId, int workerTypeId = 0)
        {
            if (jqueryTableRequest != null)
            {
                if (Request["episodeId"] != null && !string.IsNullOrWhiteSpace(Request["episodeId"]) && !Request["episodeId"].Equals("undefined"))
                {
                    episodeId = Request["episodeId"];
                }

                if (Request["teamId"] != null && !string.IsNullOrWhiteSpace(Request["teamId"]) && !Request["teamId"].Equals("undefined"))
                {
                    teamId = Request["teamId"];
                }

                if (Request["workerTypeId"] != null && !string.IsNullOrWhiteSpace(Request["workerTypeId"]) && !Request["workerTypeId"].Equals("undefined"))
                {
                    workerTypeId = int.Parse(Request["workerTypeId"]);
                }

                string filter = "";

                string[] searchTerms = jqueryTableRequest.Search.Split(new string[] { "#;$#" }, StringSplitOptions.None);
                filter = searchTerms[0];

                List <RankingDTO> searchResult = null;

                if (episodeId != null && !episodeId.Equals(""))
                {
                    if (teamId != null && !teamId.Equals(""))
                    {
                        TeamEntity team = TeamRepository.Instance.GetByIdExterno(teamId);

                        WorkerTypeEntity workerType = WorkerTypeRepository.Instance.GetById(team.WorkerTypeId);

                        if (workerType.ProfileName.Equals(Profiles.LIDER))
                        {
                            List <RankingDTO> rankingDTOList = new List <RankingDTO>();

                            //List<PlayerRunEntity> playerRunList = PlayerRunRepository.Instance.GetByEpisodeAndTeam(episodeId.ToString(), teamId);
                            GetAllDTO runnersDTO = RunEngineService.Instance.GetRunsByTeamId(teamId);

                            // buscar lista de run ao inves da tabela
                            foreach (RunEngineDTO item in runnersDTO.List.run)
                            {
                                RankingDTO dto = new RankingDTO();

                                WorkerDTO worker = WorkerRepository.Instance.GetDTOById(item.PlayerId);
                                //run .get player ID

                                dto            = EngineBIZ.GetGlobalScoreInEpisodeByEpisodeAndPlayer(episodeId.ToString(), worker.ExternalId);
                                dto.LogoId     = worker.LogoId;
                                dto.PlayerId   = worker.ExternalId;
                                dto.PlayerName = worker.Name;

                                dto.LogoId = worker.LogoId;

                                rankingDTOList.Add(dto);
                            }

                            searchResult = rankingDTOList;
                        }
                        else
                        {
                            List <RankingDTO> rankingDTOList = new List <RankingDTO>();

                            GetAllDTO runnersDTO = RunEngineService.Instance.GetRunsByTeamId(teamId);
                            foreach (RunEngineDTO item in runnersDTO.List.run)

                            {
                                RankingDTO dto = new RankingDTO();

                                WorkerDTO worker = WorkerRepository.Instance.GetDTOById(item.PlayerId);

                                dto = EngineBIZ.GetScoreByRun(item.Id);

                                dto.PlayerName = worker.Name;
                                dto.LogoId     = worker.LogoId;

                                rankingDTOList.Add(dto);
                            }

                            searchResult = rankingDTOList;
                        }
                    }
                    else
                    {
                        List <EngineTeamDTO> teamsFromEngine = new List <EngineTeamDTO>();

                        List <TeamEntity> teams = new List <TeamEntity>();

                        teamsFromEngine.AddRange(EngineBIZ.GetTeamsByEpisode(episodeId.ToString()));

                        if (workerTypeId > 0)
                        {
                            foreach (EngineTeamDTO item in teamsFromEngine)
                            {
                                TeamEntity team = new TeamEntity();
                                team = TeamRepository.Instance.GetByIdExterno(item.IdExterno);
                                teams.Add(team);
                            }

                            var teamsVar = from n in teams
                                           where n.WorkerTypeId == workerTypeId
                                           select n;

                            teams = teamsVar.ToList();
                        }
                        else
                        {
                            foreach (EngineTeamDTO item in teamsFromEngine)
                            {
                                TeamEntity team = new TeamEntity();
                                team = TeamRepository.Instance.GetByIdExterno(item.IdExterno);
                                teams.Add(team);
                            }
                        }

                        List <RankingDTO> rankingDTOList = new List <RankingDTO>();

                        foreach (TeamEntity team in teams)
                        {
                            if (team != null)
                            {
                                WorkerTypeEntity workerType = WorkerTypeRepository.Instance.GetById(team.WorkerTypeId);

                                RankingDTO rankingDTO = new RankingDTO();

                                if (workerType.ProfileName.Equals(Profiles.LIDER))
                                {
                                    WorkerEntity sponsor = WorkerRepository.Instance.GetById(team.SponsorId);

                                    rankingDTO            = EngineBIZ.GetGlobalScoreInEpisodeByEpisodeAndPlayer(episodeId.ToString(), sponsor.ExternalId);
                                    rankingDTO.LogoId     = team.LogoId;
                                    rankingDTO.PlayerId   = team.ExternalId;
                                    rankingDTO.PlayerName = team.TeamName;
                                }
                                else
                                {
                                    rankingDTO        = EngineBIZ.GetTeamScoreByTeamId(team.ExternalId);
                                    rankingDTO.LogoId = team.LogoId;
                                }

                                rankingDTOList.Add(rankingDTO);
                            }
                        }
                        searchResult = rankingDTOList;
                    }
                }
                else
                {
                    searchResult = new List <RankingDTO>();
                }

                var searchedQueryList = new List <RankingDTO>();

                searchedQueryList = searchResult;

                if (!string.IsNullOrWhiteSpace(filter))
                {
                    filter = filter.ToLowerInvariant().Trim();
                    var searchedQuery = from n in searchResult
                                        where (n.PlayerName != null && n.PlayerName.ToLowerInvariant().Trim().Contains(filter))
                                        orderby n.Score descending
                                        select n;

                    searchedQueryList = searchedQuery.ToList();
                }
                else
                {
                    var searchedQuery = from n in searchResult
                                        orderby n.Score descending
                                        select n;

                    searchedQueryList = searchedQuery.ToList();
                }

                int index = Int32.Parse(jqueryTableRequest.Order);

                JQueryDataTableResponse response = null;

                if (jqueryTableRequest.Type.Equals("asc"))
                {
                    response = new JQueryDataTableResponse()
                    {
                        Draw            = jqueryTableRequest.Draw,
                        RecordsTotal    = (jqueryTableRequest.Page + 1) * 10 - (10 - searchedQueryList.Count),
                        RecordsFiltered = (jqueryTableRequest.Page + 1) * 10 + 1,
                        Data            = searchedQueryList.Select(r => new string[] { r.PlayerId != null ? r.PlayerId.ToString() : "", r.PlayerName + ";" + r.LogoId.ToString(), r.Score != null ? r.Score.Value.ToString() : 0.ToString() }).ToArray().OrderBy(item => item[index]).ToArray()
                    };
                }
                else
                {
                    response = new JQueryDataTableResponse()
                    {
                        Draw            = jqueryTableRequest.Draw,
                        RecordsTotal    = (jqueryTableRequest.Page + 1) * 10 - (10 - searchedQueryList.Count),
                        RecordsFiltered = (jqueryTableRequest.Page + 1) * 10 + 1,
                        Data            = searchedQueryList.Select(r => new string[] { r.PlayerId != null ? r.PlayerId.ToString() : "", r.PlayerName + ";" + r.LogoId.ToString(), r.Score != null ? r.Score.Value.ToString() : 0.ToString() }).ToArray().OrderByDescending(item => item[index]).ToArray()
                    };
                }

                return(new DataContractResult()
                {
                    Data = response, JsonRequestBehavior = JsonRequestBehavior.AllowGet
                });
            }

            return(Json(null, JsonRequestBehavior.AllowGet));
        }
Esempio n. 14
0
        public ActionResult Save(FirmDTO entity, HttpPostedFileBase logoUpload)
        {
            try
            {
                using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
                {
                    if (ModelState.IsValid)
                    {
                        ImageEntity imageSaving = new ImageEntity();
                        if (logoUpload != null && logoUpload.ContentLength > 0)
                        {
                            imageSaving.Status    = GenericStatus.ACTIVE;
                            imageSaving.UpdatedBy = CurrentUserId;

                            byte[] cover = null;
                            using (var memoryStream = new MemoryStream())
                            {
                                logoUpload.InputStream.CopyTo(memoryStream);
                                if (memoryStream.Length > 0)
                                {
                                    using (Image image = Bitmap.FromStream(memoryStream))
                                    {
                                        logoUpload.InputStream.CopyTo(memoryStream);
                                        if (memoryStream.Length > 0)
                                        {
                                            cover = memoryStream.ToArray();
                                        }
                                    }
                                }
                            }

                            if (entity.DataInfo.LogoId > 0)
                            {
                                imageSaving.Id = entity.DataInfo.LogoId;
                            }
                            else
                            {
                                imageSaving = ImageRepository.Instance.CreateImage(imageSaving);
                            }

                            ImageRepository.Instance.SaveOrReplaceLogo(imageSaving.Id, cover);

                            entity.DataInfo.LogoId = imageSaving.Id;
                        }

                        entity.DataInfo.UpdatedBy = CurrentUserId;

                        if (entity.DataInfo.Id > 0)
                        {
                            if (entity.Status == 0)
                            {
                                entity.DataInfo.Status = GenericStatus.INACTIVE;
                            }
                            else
                            {
                                entity.DataInfo.Status = GenericStatus.ACTIVE;
                            }

                            ValidateModel(entity.DataInfo);

                            GameEngineDTO game = new GameEngineDTO
                            {
                                Adress       = entity.DataInfo.Adress,
                                City         = entity.DataInfo.City,
                                LogoId       = entity.DataInfo.LogoId,
                                Name         = entity.DataInfo.FirmName,
                                Neighborhood = entity.DataInfo.Neighborhood,
                                Phone        = entity.DataInfo.Phone,
                                Id           = entity.DataInfo.ExternalId,
                                LogoPath     = CurrentURL + entity.DataInfo.LogoId,
                                Description  = entity.DataInfo.Cnpj
                            };

                            try
                            {
                                game = GameEngineService.Instance.CreateOrUpdate(game, "*****@*****.**");
                            }
                            catch (Exception e)
                            {
                                Logger.LogError(e.Message);
                            }


                            List <WorkerDTO> workers = WorkerRepository.Instance.GetAllFromFirm(entity.DataInfo.Id);

                            if (entity.DataInfo.Status == GenericStatus.ACTIVE)
                            {
                                foreach (WorkerDTO item in workers)
                                {
                                    UserAccountEntity acc = AccountRepository.Instance.GetById(item.IdUser);

                                    acc.Status = GenericStatus.ACTIVE;

                                    AccountRepository.Instance.Update(acc);
                                }
                            }
                            else
                            {
                                foreach (WorkerDTO item in workers)
                                {
                                    UserAccountEntity acc = AccountRepository.Instance.GetById(item.IdUser);

                                    acc.Status = GenericStatus.INACTIVE;

                                    AccountRepository.Instance.Update(acc);
                                }
                            }

                            DataRepository.Instance.UpdateFirm(entity.DataInfo);
                        }
                        else
                        {
                            if (!entity.Password.Equals(entity.PasswordConfirmation))
                            {
                                Warning("As duas senhas digitadas não conferem.");
                            }

                            NewRequest request = new NewRequest();

                            AuthResult result = new AuthResult();

                            request.Cpf      = entity.ProfileInfo.CPF;
                            request.Name     = entity.ProfileInfo.Name;
                            request.Phone    = entity.ProfileInfo.Phone;
                            request.Password = entity.Password;
                            request.Email    = entity.ProfileInfo.Email;
                            request.Username = entity.Username;

                            result = AccountHandler.CreateFirmUser(request, Roles.WORKER);

                            if (!AuthStatus.OK.Equals(result.AuthStatus))
                            {
                                Error(AccountHelper.HandleError(result));

                                return(View("Create", entity));
                            }

                            ValidateModel(entity.DataInfo);

                            GameEngineDTO game = new GameEngineDTO
                            {
                                Adress       = entity.DataInfo.Adress,
                                City         = entity.DataInfo.City,
                                LogoId       = entity.DataInfo.LogoId,
                                Name         = entity.DataInfo.FirmName,
                                Neighborhood = entity.DataInfo.Neighborhood,
                                Phone        = entity.DataInfo.Phone,
                                Id           = entity.DataInfo.ExternalId,
                                Description  = entity.DataInfo.Cnpj
                            };
                            game = GameEngineService.Instance.CreateOrUpdate(game, "*****@*****.**");



                            entity.DataInfo.ExternalId = game.Id;

                            entity.DataInfo.Status = GenericStatus.ACTIVE;

                            entity.DataInfo = DataRepository.Instance.CreateFirm(entity.DataInfo);

                            WorkerEntity worker = new WorkerEntity();

                            WorkerTypeEntity workerType = new WorkerTypeEntity();

                            workerType.FirmId      = entity.DataInfo.Id;
                            workerType.ProfileName = Profiles.ADMINISTRADOR;
                            workerType.Status      = GenericStatus.ACTIVE;
                            workerType.TypeName    = "ADMINISTRADOR";
                            workerType.UpdatedBy   = CurrentUserId;

                            workerType = WorkerTypeRepository.Instance.CreateWorkerType(workerType);

                            worker.WorkerTypeId = workerType.Id;
                            worker.UserId       = result.UserId;
                            worker.UpdatedBy    = CurrentUserId;
                            worker.FirmId       = entity.DataInfo.Id;
                            worker.Status       = GenericStatus.ACTIVE;
                            worker.LogoId       = entity.DataInfo.LogoId;

                            PlayerEngineDTO player = new PlayerEngineDTO
                            {
                                Nick   = request.Name,
                                Xp     = 1,
                                Level  = 1,
                                Role   = workerType.TypeName,
                                GameId = game.Id,
                                LogoId = worker.LogoId,
                                Email  = entity.ProfileInfo.Email,
                                Cpf    = entity.ProfileInfo.CPF,
                                Active = true
                            };
                            player = PlayerEngineService.Instance.CreateOrUpdate(player, "*****@*****.**");

                            worker.ExternalId     = player.Id;
                            worker.ExternalFirmId = game.Id;

                            worker = WorkerRepository.Instance.CreateWorker(worker);
                        }

                        Success("Empresa salva com sucesso.");
                        scope.Complete();
                    }
                    else
                    {
                        Warning("Alguns campos são obrigatórios para salvar a empresa.");

                        if (entity.DataInfo.Id > 0)
                        {
                            ViewBag.Status = GetStatusToSelect(entity.DataInfo.Status == GenericStatus.ACTIVE ? 1 : 0);

                            return(View("Edit", entity));
                        }
                        else
                        {
                            return(View("Create", entity));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
                Error("Ocorreu um erro ao tentar salvar a empresa.", ex);

                if (entity.DataInfo.Id > 0)
                {
                    ViewBag.Status = GetStatusToSelect(entity.DataInfo.Status == GenericStatus.ACTIVE ? 1 : 0);

                    return(View("Edit", entity));
                }
                else
                {
                    return(View("Create", entity));
                }
            }

            return(View("Index"));
        }