static public void MigrationEmailToEngine() { List <DataEntity> entityList = DataRepository.Instance.GetAll(0, 100); foreach (DataEntity entity in entityList) { GameEngineDTO game = new GameEngineDTO { Adress = entity.Adress, City = entity.City, LogoId = entity.LogoId, Name = entity.FirmName, Neighborhood = entity.Neighborhood, Phone = entity.Phone, Id = entity.ExternalId, LogoPath = CurrentURL + entity.LogoId }; game = GameEngineService.Instance.CreateOrUpdate(game, "*****@*****.**"); //List<WorkerDTO> workers = WorkerRepository.Instance.GetAllFromFirm(entity.ExternalId); List <WorkerDTO> workers = WorkerRepository.Instance.GetWorkerDTOByExternalGameId(entity.ExternalId); string errors = ""; foreach (WorkerDTO worker in workers) { try { PlayerEngineDTO player = new PlayerEngineDTO(); player.Email = worker.Email; player.Cpf = worker.Cpf; player.Role = worker.Role; player.LogoId = worker.LogoId; player.LogoPath = CurrentURL + player.LogoId; player.Id = worker.ExternalId; player.GameId = entity.ExternalId; player.Nick = worker.Name; player.Xp = 1; player.Level = 1; PlayerEngineService.Instance.CreateOrUpdate(player, "*****@*****.**"); } catch (Exception e) { errors += worker.Email + " -> " + e.Message + "<br/>"; } } } }
/// <summary> /// Envia por email o ranking geral para os jogadores. /// </summary> /// <returns></returns> public async override void Run() { //Send(new EmailSupportDTO { Msg = "Bom dia", Category = "", Subject = "Testes Gamific" }, "*****@*****.**"); //GetAllDTO players = PlayerEngineService.Instance.GetByGameId(game.Id); //GetAllDTO episodes = EpisodeEngineService.Instance.GetByGameIdAndActive(game.Id, 1); Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); string dayOfWeek = DateTime.Now.ToString("ddd"); List <EpisodeEngineDTO> episodes; //episodes.Add(new EpisodeEngineDTO("58e3708a3a8778588098a82b", "5880a1743a87783b4f0ba709")); GetAllDTO allEpisodes = EpisodeEngineService.Instance.GetAll(0, 100000); episodes = allEpisodes.List.episode.Where(x => x.Active == true && x.sendEmail == true && (x.DaysOfWeek != null ? x.DaysOfWeek.Split(',').Contains(dayOfWeek.ToLower()) : false)).ToList(); foreach (EpisodeEngineDTO episode in episodes) { List <string> emails = new List <string>(); GetAllDTO teams = TeamEngineService.Instance.FindByEpisodeId(episode.Id, email); GameEngineDTO game = GameEngineService.Instance.GetById(episode.GameId, email); foreach (TeamEngineDTO team in teams.List.team) { if (team.SubTeams == null || team.SubTeams.Count() == 0) { GetAllDTO runs = RunEngineService.Instance.GetRunsByTeamId(team.Id, email); foreach (RunEngineDTO run in runs.List.run) { WorkerDTO worker = WorkerRepository.Instance.GetWorkerDTOByExternalId(run.PlayerId); if (worker != null && (worker.ProfileName == Profiles.LIDER || worker.ProfileName == Profiles.JOGADOR)) { string emailBody = CreateEmail(game, episode.Id, team.Id, worker.ExternalId, worker); //Send(new EmailSupportDTO { Msg = emailBody, Category = "", Subject = "Ranking Gamific" }, "*****@*****.**"); //Send(new EmailSupportDTO { Msg = emailBody, Category = "", Subject = "Ranking Gamific" }, worker.Email); EmailSender.Send(new EmailSupportDTO { Msg = emailBody, Category = "", Subject = "Ranking Gamific" }, worker.Email, game.Id, episode.Id, worker.ExternalId); } } } } } }
public string GetImagePathGame(string gameId, string email) { GameEngineDTO game = GameEngineService.Instance.GetById(gameId, email); var json = JsonConvert.SerializeObject( new { logoPath = CurrentURL + game.LogoId }, Formatting.Indented, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() } ); return(json); }
public ActionResult SaveFirm(DataEntity entity) { DataRepository.Instance.UpdateFirm(entity); GameEngineDTO game = new GameEngineDTO { Adress = entity.Adress, City = entity.City, Neighborhood = entity.Neighborhood, Phone = entity.Phone, Id = entity.ExternalId, Name = entity.CompanyName, LogoId = entity.LogoId, Description = entity.Cnpj, LogoPath = CurrentURL + entity.LogoId }; GameEngineService.Instance.CreateOrUpdate(game); Success("Dados da empresa alterados com sucesso!"); return(Redirect("/public/dashboard")); }
private MemoryStream CreateXls() { List <UserAccountEntity> accontEntityResults = AccountRepository.Instance.GetAll(); List <AccountDevicesEntity> accontDeviceEntitys = AccountDevicesRepository.Instance.FindAll(); List <UserProfileEntity> userProfileEntitys = UserProfileRepository.Instance.GetAllUsers(); string filename = "Input" + DateTime.Now.ToString("yyyyMMdd_hhss") + ".xls"; /*var workbook = new Workbook(); * * * workbook.FileName = filename; * * var worksheetResults = workbook.Worksheets[0]; * * int rowsCount = 40000; * * worksheetResults.Cells.HideColumns(5, 16384); * worksheetResults.Cells.HideRows(rowsCount, 1048576); * worksheetResults.Cells.StandardWidth = 35.0; * * worksheetResults.Name = "Contra_Relatorio"; * * var cellsResults = worksheetResults.Cells; * * cellsResults["A1"].PutValue("Nome"); * cellsResults["B1"].PutValue("Email"); * cellsResults["C1"].PutValue("Empresa"); * cellsResults["D1"].PutValue("Web"); * cellsResults["E1"].PutValue("Mobile"); * * var validations = worksheetResults.Validations; * * var validationName = validations[validations.Add()]; * validationName.Type = ValidationType.List; * validationName.Operator = OperatorType.Between; * validationName.InCellDropDown = true; * validationName.ShowError = true; * validationName.AlertStyle = ValidationAlertType.Stop; * CellArea areaName; * areaName.StartRow = 1; * areaName.EndRow = rowsCount; * areaName.StartColumn = 0; * areaName.EndColumn = 0; * validationName.AreaList.Add(areaName); * * var validationEmail = validations[validations.Add()]; * validationEmail.Type = ValidationType.TextLength; * validationEmail.Operator = OperatorType.None; * validationEmail.InCellDropDown = false; * validationEmail.ShowError = true; * validationEmail.AlertStyle = ValidationAlertType.Stop; * CellArea areaEmails; * areaEmails.StartRow = 1; * areaEmails.EndRow = rowsCount; * areaEmails.StartColumn = 1; * areaEmails.EndColumn = 1; * validationEmail.AreaList.Add(areaEmails); * * var validationEmpresa = validations[validations.Add()]; * validationEmpresa.Type = ValidationType.WholeNumber; * validationEmpresa.Operator = OperatorType.Between; * validationEmpresa.Formula1 = 0.ToString(); * validationEmpresa.Formula2 = Int32.MaxValue.ToString(); * validationEmpresa.InCellDropDown = false; * validationEmpresa.ShowError = true; * validationEmpresa.AlertStyle = ValidationAlertType.Stop; * CellArea areaEmpresa; * areaEmpresa.StartRow = 1; * areaEmpresa.EndRow = rowsCount; * areaEmpresa.StartColumn = 2; * areaEmpresa.EndColumn = 2; * validationEmpresa.AreaList.Add(areaEmpresa); * * var validationWeb = validations[validations.Add()]; * validationWeb.Type = ValidationType.Date; * validationWeb.Operator = OperatorType.Between; * DateTime firstDate = DateTime.MinValue; * validationWeb.Formula1 = firstDate.AddYears(1899).ToString().Split(' ')[0]; * validationWeb.Formula2 = DateTime.Now.ToString().Split(' ')[0]; * validationWeb.InCellDropDown = false; * validationWeb.ShowError = true; * validationWeb.AlertStyle = ValidationAlertType.Stop; * CellArea areaWeb; * areaWeb.StartRow = 1; * areaWeb.EndRow = rowsCount; * areaWeb.StartColumn = 3; * areaWeb.EndColumn = 3; * validationWeb.AreaList.Add(areaWeb); * * var validationMobile = validations[validations.Add()]; * validationMobile.Type = ValidationType.Date; * validationMobile.Operator = OperatorType.Between; * DateTime secondDate = DateTime.MinValue; * validationMobile.Formula1 = secondDate.AddYears(1899).ToString().Split(' ')[0]; * validationMobile.Formula2 = DateTime.Now.ToString().Split(' ')[0]; * validationMobile.InCellDropDown = false; * validationMobile.ShowError = true; * validationMobile.AlertStyle = ValidationAlertType.Stop; * CellArea areaMobile; * areaMobile.StartRow = 1; * areaMobile.EndRow = rowsCount; * areaMobile.StartColumn = 4; * areaMobile.EndColumn = 4; * validationMobile.AreaList.Add(areaMobile); */ MemoryStream ms = new MemoryStream(); //int row = 2; string util = "<table>"; util = util + "<tr> <th>Nome</th> <th>Email</th> <th>Empresa</th> <th>Web</th> <th>Mobile</th> </tr>"; foreach (UserProfileEntity userProfileEntity in userProfileEntitys) { util = util + "<tr>"; PlayerEngineDTO player = null; AccountDevicesEntity device = null; bool token = true; try { player = PlayerEngineService.Instance.GetByEmail(userProfileEntity.Email, true); //player = PlayerEngineService.Instance.GetByEmail("*****@*****.**", true); } catch (Exception ex) { token = false; } try { //device = AccountDevicesRepository.Instance.FindByPlayerIdDescending(player.Id).First(); } catch (Exception ex) { device = null; } //cellsResults["A" + row].PutValue(userProfileEntity.Name); //cellsResults["B" + row].PutValue(userProfileEntity.Email); util = util + "<th>" + userProfileEntity.Name + "</th>"; util = util + "<th>" + userProfileEntity.Email + "</th>"; //util = util + "<th>" + player.Nick + "</th>"; //util = util + "<th>" + player.Email + "</th>"; if (token) { GameEngineDTO game = GameEngineService.Instance.GetById(player.GameId, player.Email); util = util + "<th>" + game.Name + "</th>"; } else { util = util + "<th>" + "------" + "</th>"; } try { //cellsResults["D" + row].PutValue(accontEntityResult.LastLogin); util = util + "<th>" + AccountRepository.Instance.FindByUserName(player.Email).LastUpdate + "</th>"; }catch (Exception ex) { util = util + "<th>" + "--------" + "</th>"; } try { //cellsResults["E" + row].PutValue(device.Last_Update); util = util + "<th>" + device.Last_Update + "</th>"; } catch (Exception ex) { //cellsResults["E" + row].PutValue("----"); util = util + "<th>" + "-----" + "</th>"; } //row++; util = util + "</tr>"; } //ms = workbook.SaveToStream(); //Send(new EmailSupportDTO { Msg = util , Category = "", Subject = "Contra-relatorio" },"*****@*****.**", ms, filename); Send(new EmailSupportDTO { Msg = util, Category = "", Subject = "Contra-relatorio" }, "*****@*****.**", ms, filename); Send(new EmailSupportDTO { Msg = util, Category = "", Subject = "Contra-relatorio" }, "*****@*****.**", ms, filename); //Send(new EmailSupportDTO { Msg = util , Category = "", Subject = "Contra-relatorio" }, "*****@*****.**", ms, filename); return(null); //ms; }
private string CreateEmail(GameEngineDTO game, string episodeId, string teamId, string playerId, WorkerDTO worker) { PlayerEngineDTO player = playerId == null ? null : PlayerEngineService.Instance.GetById(playerId, email); TeamEngineDTO team = teamId == null ? null : TeamEngineService.Instance.GetById(teamId, email); EpisodeEngineDTO episode = episodeId == null ? null : EpisodeEngineService.Instance.GetById(episodeId, email); GetAllDTO runs = RunEngineService.Instance.GetAllRunScore(teamId, "", email); GetAllDTO teams = TeamEngineService.Instance.GetAllTeamScoreByEpisodeId(episode.Id, "", email, 0, 10); if (runs.List != null) { List <PlayerEngineDTO> players = new List <PlayerEngineDTO>(); foreach (RunEngineDTO run in runs.List.run) { try { PlayerEngineDTO p = PlayerEngineService.Instance.GetById(run.PlayerId, email); if (p != null) { players.Add(p); } } catch (Exception e) { } } runs.List.result = (from run in runs.List.run from p in players where p.Id == run.PlayerId select new ResultEngineDTO { Id = p.Id, Nick = p.Nick, Score = run.Score, LogoId = p.LogoId }).ToList(); if (player.Id != null && worker.ProfileName == Profiles.JOGADOR && runs.List.result.Find(x => x.Id == player.Id) == null) { RunEngineDTO playerRun = RunEngineService.Instance.GetRunByPlayerAndTeamId(player.Id, team.Id, email); ResultEngineDTO result = new ResultEngineDTO { Id = player.Id, Nick = player.Nick, Score = playerRun.Score, LogoId = player.LogoId }; runs.List.result.Add(result); } } if (teams.List != null) { teams.List.result = (from t in teams.List.team select new ResultEngineDTO { Id = t.Id, Nick = t.Nick, Score = t.Score, LogoId = t.LogoId }).ToList(); } string emailBody = "<!DOCTYPE html><html xmlns = 'http://www.w3.org/1999/xhtml'><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8;'/><style>body{color: #000000; font-family: Roboto, sans-serif;} h1{font-size: 30px;} h2{font-size: 24px;}h3{font-size: 18px;} strong{color: #1cb29b;} a{text-decoration: none; color: #153643; font-weight: 700;} td{text-align: center;} .image-icon{width:48px;height:48px !important;border-radius:100%;margin-right: 10px;} .score{text-align: right !important; padding-left:15px;} .name{text-align:left !important;} .sucess-goal{color: #1cb29b !important; font-weight: bold;} .alert-goal{color: firebrick;font-weight: bold;} .normal-goal{color: orange; font-weight:bold;}</style></head>"; emailBody += "<body style = 'margin: 0; padding: 0;'><table align = 'center' border = '0' cellpadding = '0' cellspacing = '0' width = '1000'>"; emailBody += "</td></tr><tr><td style='padding: 0 0 0 0;' align='center'>"; emailBody += "</td></tr><tr><td>"; emailBody += "<table border='0' cellpadding='0' cellspacing='0' width='100%'><tr><td width='260' valign='top'>"; emailBody += "<tr><td align='center'><img src = 'https://s3.amazonaws.com/gamific-prd/images/logos/empresas/logo-1' width = '340' height = '223'/></td></tr>"; emailBody += "<tr><td><table border='0' cellpadding='0' cellspacing='0' width='100%'><tr><td><h1 align='center'> Olá " + player.Nick + "!<br/> Aqui estão seus resultados diários</h1></td></tr>"; emailBody += "<tr><td><h2 align='center'> Campanha " + episode.Name + " </h2></td></tr>"; emailBody += "<tr><td><h2 align='center'>" + team.Nick + " </h2></td></tr>"; emailBody += "<tr><td><h3 align='center'> Resultados individuais </h3>"; emailBody += CreateIndividualResultsTable(team, player, game.Id, worker.ProfileName); emailBody += "<h3 align='center'>Ranking dos membros da equipe</h3>"; emailBody += CreateRankingPlayersFromTeamResultsTable(runs.List != null ? runs.List.result : null, playerId); emailBody += "<h3 align='center'>Ranking das equipes na campanha</h3>"; emailBody += CreateRankingTeamsFromCampaignResultsTable(teams.List != null ? teams.List.result : null, teamId); emailBody += "</td></tr></table></td></tr>"; emailBody += "<tr><td><p align='center'>Acesse o site: <a href='http://www.gamific.com.br/'> Gamific </a></p></td></tr>"; emailBody += "</table></body></html>"; return(emailBody); }
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")); }
public GameEngineDTO CreateOrUpdate(GameEngineDTO game, string email) { return(PostDTO <GameEngineDTO>(ref game, email)); }
public GameEngineDTO CreateOrUpdate(GameEngineDTO game) { return(PostDTO <GameEngineDTO>(ref game)); }