public ActionResult Edit(string episodeId) { EpisodeEngineDTO episode = EpisodeEngineService.Instance.GetById(episodeId); if (episode.Active.Equals(0) || episode.Active == false) { //episode.Active = true; } else { episode.GameId = CurrentFirm.ExternalId; episode.initDateAux = new DateTime(episode.initDate); episode.finishDateAux = new DateTime(episode.finishDate); ViewBag.Icons = Enum.GetValues(typeof(Icons)).Cast <Icons>().Select(i => new SelectListItem { Text = i.ToString(), Value = i.ToString() }).ToList(); } if (episode.DaysOfWeek == null || episode.Active == false) { episode.DaysOfWeek = ""; } return(PartialView("_edit", episode)); }
public ActionResult Details(string episodeId, string metricId, string teamId, string playerId) { MetricEngineDTO metric = MetricEngineService.Instance.GetById(metricId); metric.Icon = metric.Icon.Replace("_", "-"); ViewBag.EpisodeId = episodeId; ViewBag.TeamId = teamId; ViewBag.PlayerId = playerId; if (playerId != "empty") { PlayerEngineDTO player = PlayerEngineService.Instance.GetById(playerId); ViewBag.Name = player.Nick; } else if (teamId != "empty") { TeamEngineDTO team = TeamEngineService.Instance.GetById(teamId); ViewBag.Name = team.Nick; } else { EpisodeEngineDTO episode = EpisodeEngineService.Instance.GetById(episodeId); ViewBag.Name = episode.Name; } return(View("Detail", metric)); }
public ActionResult Save(EpisodeEngineDTO episode) { try { if (ModelState.IsValid) { if (episode.Active == false) { Success("Campanha não pode ser alterada."); } else { if (episode.Id == null || episode.Id.Equals("")) { episode.Active = true; } episode.initDate = episode.initDateAux.Ticks; episode.finishDate = episode.finishDateAux.Ticks; episode.GameId = CurrentFirm.ExternalId; ValidateModel(episode); EpisodeEngineDTO newEpisode = EpisodeEngineService.Instance.CreateOrUpdate(episode); if (newEpisode == null) { throw new Exception("."); } Success("Campanha atualizada com sucesso."); } } else { episode.Active = true; ViewBag.Icons = Enum.GetValues(typeof(Icons)).Cast <Icons>().Select(i => new SelectListItem { Text = i.ToString(), Value = i.ToString() }).ToList(); ModelState.AddModelError("", "Alguns campos são obrigatórios para salvar a Campanha."); return(PartialView("_Edit", episode)); } } catch (Exception ex) { Logger.LogException(ex); Error("Erro ao atualizar campanha" + ex.Message); return(PartialView("_Edit")); } return(new EmptyResult()); }
public ImplantationDTO() { Episode = new EpisodeEngineDTO(); WorkerType = new WorkerTypeEntity(); Worker = new WorkerDTO(); Team = new TeamEngineDTO(); Metric = new MetricEngineDTO(); Goal = new List <GoalEngineDTO>(); }
public ActionResult NewClone(String name, String id) { long initDate = DateTime.Now.Ticks; long finishDate = DateTime.Now.Ticks; EpisodeEngineDTO episode = EpisodeEngineService.Instance.Clone(name, id, initDate, finishDate); return(new EmptyResult()); }
public ActionResult Clonar(string episodeId) { EpisodeEngineDTO episode = EpisodeEngineService.Instance.GetById(episodeId); ViewBag.Icons = Enum.GetValues(typeof(Icons)).Cast <Icons>().Select(i => new SelectListItem { Text = i.ToString(), Value = i.ToString() }).ToList(); return(PartialView("_Clone", episode)); }
public ActionResult Create() { EpisodeEngineDTO episode = new EpisodeEngineDTO(); episode.Active = true; ViewBag.Icons = Enum.GetValues(typeof(Icons)).Cast <Icons>().Select(i => new SelectListItem { Text = i.ToString(), Value = i.ToString() }).ToList(); return(PartialView("_Edit", episode)); }
public ActionResult Index(string episodeId, string teamId, string playerId) { GetAllDTO all = EpisodeEngineService.Instance.GetByGameIdAndActive(CurrentFirm.ExternalId, 1); if (all.List.episode != null && all.List.episode.Count != 0) { ViewBag.Episodes = from ep in all.List.episode select new SelectListItem { Value = ep.Id.ToString(), Text = ep.Name }; EpisodeEngineDTO episode = EpisodeEngineService.Instance.GetById(episodeId); //ViewBag.Metrics = MetricEngineService.Instance.GetByGameId(CurrentFirm.ExternalId).List.metric; ViewBag.Metrics = MetricEngineService.Instance.GetAllDTOByGame(CurrentFirm.ExternalId, 0, 100).List.metric; ViewBag.State = episode.Active == true ? 1 : 0; ViewBag.EpisodeId = episodeId; ViewBag.TeamId = teamId; ViewBag.PlayerId = playerId; ViewBag.Grafic_itens = changeVisibilityGraph(); ViewBag.Grafic_stogram = changeVisibilityGraphStogram(); ViewBag.Grafic_evolution = changeVisibilityGraphEvolution(); } else { ViewBag.Grafic_itens = false; ViewBag.Grafic_stogram = false; ViewBag.Grafic_evolution = false; } ViewBag.GameId = CurrentFirm.ExternalId; return(View("Index")); }
public ActionResult DetailsCheckin(string episodeId, string metricId, string teamId, string playerId) { List <RunEngineDTO> runners = new List <RunEngineDTO>(); if (playerId != "empty") { RunEngineDTO runner = RunEngineService.Instance.GetByEpisodeIdAndPlayerId(episodeId, playerId); runners.Add(runner); } else if (teamId != "empty") { runners = GetRunsByTeamIdRecursive(teamId); } else { GetAllDTO all = TeamEngineService.Instance.FindByEpisodeId(episodeId); all.List.team = all.List.team.OrderBy(x => x.Nick).ToList(); List <string> subTeamsNull = all.List.team.Where(x => x.SubOfTeamId == null).Select(x => x.Id).ToList(); List <TeamEngineDTO> teams = new List <TeamEngineDTO>(); foreach (string subTeamNull in subTeamsNull) { teams.AddRange(OrganizeHierarchy(all.List.team, subTeamNull)); } foreach (TeamEngineDTO team in teams) { runners.AddRange(GetRunsByTeamIdRecursive(team.Id)); } } MetricEngineDTO metric = MetricEngineService.Instance.GetById(metricId); List <LocationDTO> locations = MetricEngineService.Instance.MapPointsByRunsAndMetric(runners, metric); List <LocationViewDTO> locs = new List <LocationViewDTO>(); foreach (LocationDTO location in locations) { LocationViewDTO loc = new LocationViewDTO(); loc.Lat = location.Latitude; loc.Lon = location.Longitude; loc.html = location.Description ?? "Check-in"; locs.Add(loc); } ViewBag.EpisodeId = episodeId; ViewBag.TeamId = teamId; ViewBag.PlayerId = playerId; ViewBag.Locations = Content(JsonConvert.SerializeObject(locs), "application/json"); ViewBag.MetricId = metricId; if (playerId != "empty") { PlayerEngineDTO player = PlayerEngineService.Instance.GetById(playerId); ViewBag.Name = player.Nick; } else if (teamId != "empty") { TeamEngineDTO team = TeamEngineService.Instance.GetById(teamId); ViewBag.Name = team.Nick; } else { EpisodeEngineDTO episode = EpisodeEngineService.Instance.GetById(episodeId); ViewBag.Name = episode.Name; } return(View("DetailCheckin")); }
public ContentResult GetChartResults(List <string> metricsIds, string campaignId, string teamId, string workerId, string initDate, string endDate) { List <ChartResultDTO> rtn = new List <ChartResultDTO>(); EpisodeEngineDTO episodeObj = EpisodeEngineService.Instance.GetById(campaignId); List <string> episodesParam = new List <string>(); episodesParam.Add(campaignId); DateTime initDT; if (initDate == null || initDate.Length == 0) { initDT = DateTime.Now.AddDays(-10); } else { initDT = DateTime.Parse(initDate); } DateTime endDT; if (endDate == null || endDate.Length == 0) { endDT = DateTime.Now; } else { endDT = DateTime.Parse(endDate); } initDT = DateTime.Now.AddMonths(-6); endDT = DateTime.Now.AddDays(1); List <string> runners = new List <string>(); if (!string.IsNullOrEmpty(teamId) && !teamId.Equals("empty")) { if (!string.IsNullOrEmpty(workerId) && !workerId.Equals("empty")) { RunEngineDTO run = RunEngineService.Instance.GetByEpisodeIdAndPlayerId(campaignId, workerId); runners.Add(run.Id); } else { List <RunEngineDTO> runnersObj = GetRunsByTeamIdRecursive(teamId); foreach (RunEngineDTO run in runnersObj) { runners.Add(run.Id); } } } List <string> periods = new List <string>(); foreach (string item in metricsIds) { ChartResultDTO chartDTO = new ChartResultDTO(); List <string> metricParam = new List <string>(); metricParam.Add(item); chartDTO = CardEngineService.Instance.GameAndMetricAndPeriod(runners, episodesParam, episodeObj.GameId, metricParam, initDT.Ticks, endDT.Ticks); foreach (EpisodeEngineDTO entrie in chartDTO.Entries) { if (!periods.Contains(entrie.Name)) { periods.Add(entrie.Name); } } rtn.Add(chartDTO); } List <LineDTO> linesDTO = new List <LineDTO>(); foreach (string period in periods) { LineDTO line = new LineDTO(); line.Period = period; foreach (ChartResultDTO item in rtn) { var query = from entrie in item.Entries where entrie.Name.Equals(period) select new LinePointDTO { MetricName = item.Name, Value = entrie.Value }; if (query.ToList().Count <= 0) { LinePointDTO linePoint = new LinePointDTO(); linePoint.MetricName = item.Name; linePoint.Value = 0; line.Points.Add(linePoint); } else { line.Points.Add(query.FirstOrDefault()); } } linesDTO.Add(line); } foreach (LineDTO aux in linesDTO) { aux.dateLong = Convert.ToDateTime(aux.Period).Ticks; } var lineQuery = from line in linesDTO orderby line.dateLong select line; linesDTO = lineQuery.ToList(); return(Content(JsonConvert.SerializeObject(linesDTO), "application/json")); }
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 ContentResult GetCampaign(string campaignId) { EpisodeEngineDTO rtn = EpisodeEngineService.Instance.GetById(campaignId); return(Content(JsonConvert.SerializeObject(rtn), "application/json")); }
public EpisodeEngineDTO CreateOrUpdate(EpisodeEngineDTO episode) { return(PostDTO <EpisodeEngineDTO>(ref episode)); }
//Sol bebidas /// <summary> /// Salva as informações do resultado via arquivo /// </summary> /// <param name="resultsArchive"></param> /// <param name="episodeId"></param> /// <returns></returns> //[Route("salvarResultadoArquivo")] //[HttpPost] //[CustomAuthorize(Roles = "WORKER,ADMINISTRADOR,SUPERVISOR DE CAMPANHA,SUPERVISOR DE EQUIPE")] public ActionResult SaveResultArchiveSolBebidas(HttpPostedFileBase resultsArchive, string episodeId) { int ANO = 0; int MES = 1; int REPRESENTANTE = 2; int EMAIL = 3; int CLIENTE = 4; int COD_PRODUTO = 5; int PRODUTO = 6; int QTDE_OBJ = 7; int QTDE_REAL = 8; int PERCENT_QTDE = 9; int VLR_OBJ = 10; int VLR_BRUTO_REAL = 11; int PERCENT_VALOR = 12; int VLR_MEDIO_OBJETIVO = 13; int VLR_MEDIO_REAL = 14; int TIPO_PRODUTO = 15; EpisodeEngineDTO episode = EpisodeEngineService.Instance.GetById(episodeId); string gameId = CurrentFirm.ExternalId; string errors = "Erros: {0}<br/>"; List <GoalEngineDTO> goalsTotalFat = new List <GoalEngineDTO>(); List <GoalEngineDTO> goalsTotalVol = new List <GoalEngineDTO>(); MetricEngineDTO metricFat; MetricEngineDTO metricVol; int line = 1; int errorsCount = 0; string productType = resultsArchive.FileName.Split(' ')[0]; try { metricFat = MetricEngineService.Instance.GetDTOByGameAndName(gameId, productType + " FATURAMENTO"); } catch (Exception e) { errors += "Metrica (Faturamento) não encontrado.<br/>"; errorsCount++; metricFat = new MetricEngineDTO(); Debug.Print("Error metric: " + e.Message); } try { metricVol = MetricEngineService.Instance.GetDTOByGameAndName(gameId, productType + " VOLUME"); } catch (Exception e) { errors += "Metrica (Volume) não encontrado.<br/>"; errorsCount++; metricVol = new MetricEngineDTO(); Debug.Print("Error metric: " + e.Message); } try { //EpisodeEngineService.Instance.DeleteAllScoreByEpisodeId(episodeId); resultsArchive.SaveAs(Path.Combine(Server.MapPath("~/App_Data"), resultsArchive.FileName)); var archive = new ExcelQueryFactory(Path.Combine(Server.MapPath("~/App_Data"), Path.GetFileName(resultsArchive.FileName))); var rows = from x in archive.WorksheetRange("A1", "O" + rowsCount, "Plan1") select x; float points; foreach (var row in rows) { line++; PlayerEngineDTO player; RunEngineDTO run; if (row[PRODUTO].ToString().ToLower().Contains("uvinha")) { continue; } try { player = PlayerEngineService.Instance.GetByEmail(row[EMAIL].ToString().Trim().ToLower()); } catch (Exception e) { Debug.Print("Error player: " + e.Message); errors += "(Linha -> " + line + "°, Coluna -> 'Representante') " + "Jogador: " + row[EMAIL].ToString().Trim() + " não encontrado.<br/>"; errorsCount++; continue; } try { run = RunEngineService.Instance.GetByEpisodeIdAndPlayerId(episodeId, player.Id); } catch (Exception e) { Debug.Print("Error run: " + e.Message); errors += "(Linha -> " + line + "°, Coluna -> 'Email') " + "Jogador: " + row[EMAIL].ToString().Trim() + " não participa desta campanha.<br/>"; errorsCount++; continue; } float.TryParse(row[VLR_OBJ].ToString(), out points); if (goalsTotalFat.Find(x => x.RunId == run.Id) != null) { goalsTotalFat.Find(x => x.RunId == run.Id).Goal += points; } else { GoalEngineDTO goalFat; try { goalFat = GoalEngineService.Instance.GetByRunIdAndMetricId(run.Id, metricFat.Id); goalFat.Goal = points; } catch (Exception e) { goalFat = new GoalEngineDTO { Goal = points, MetricIcon = metricFat.Icon, MetricId = metricFat.Id, MetricName = metricFat.Name, Percentage = 0, RunId = run.Id }; Debug.Print("Goal faturamento: " + e.Message); } goalsTotalFat.Add(goalFat); } float.TryParse(row[QTDE_OBJ].ToString(), out points); if (goalsTotalVol.Find(x => x.RunId == run.Id) != null) { goalsTotalVol.Find(x => x.RunId == run.Id).Goal += points; } else { GoalEngineDTO goalVol; try { goalVol = GoalEngineService.Instance.GetByRunIdAndMetricId(run.Id, metricVol.Id); goalVol.Goal = points; } catch (Exception e) { goalVol = new GoalEngineDTO { Goal = points, MetricIcon = metricVol.Icon, MetricId = metricVol.Id, MetricName = metricVol.Name, Percentage = 0, RunId = run.Id }; Debug.Print("Goal volume: " + e.Message); } goalsTotalVol.Add(goalVol); } ItemEngineDTO item = new ItemEngineDTO { GameId = gameId, Name = row[PRODUTO].ToString().Trim() }; try { item = ItemEngineService.Instance.FindByNameAndGameId(item.Name, item.GameId); } catch (Exception e) { item = ItemEngineService.Instance.CreateOrUpdate(item); Debug.Print("Error metric: " + e.Message); } float.TryParse(row[VLR_BRUTO_REAL].ToString(), out points); RunMetricEngineDTO resultFaturamento = new RunMetricEngineDTO { Ceiling = metricFat.Ceiling, Description = metricFat.Description, Floor = metricFat.Floor, MetricId = metricFat.Id, Multiplier = metricFat.Multiplier, Name = metricFat.Name, Xp = 0, Score = 0, Points = (int)points, Date = DateTime.Now.Ticks, PlayerId = player.Id, ItemId = item.Id, ItemName = item.Name, RunId = run.Id }; float.TryParse(row[QTDE_REAL].ToString(), out points); RunMetricEngineDTO resultVolume = new RunMetricEngineDTO { Ceiling = metricVol.Ceiling, Description = metricVol.Description, Floor = metricVol.Floor, MetricId = metricVol.Id, Multiplier = metricVol.Multiplier, Name = metricVol.Name, Xp = 0, Score = 0, Points = (int)points, Date = DateTime.Now.Ticks, PlayerId = player.Id, ItemId = item.Id, ItemName = item.Name, RunId = run.Id }; RunMetricEngineService.Instance.CreateOrUpdate(resultFaturamento); RunMetricEngineService.Instance.CreateOrUpdate(resultVolume); } foreach (GoalEngineDTO goal in goalsTotalVol) { GoalEngineService.Instance.CreateOrUpdate(goal); } foreach (GoalEngineDTO goal in goalsTotalFat) { GoalEngineService.Instance.CreateOrUpdate(goal); } errors = string.Format(errors, errorsCount); string emailFrom = ParameterCache.Get("SUPPORT_EMAIL"); string subject = errorsCount >= 1 ? "Erros ao subir planilha de resultados" : "O lançamento de resultados foi um sucesso."; subject = CurrentFirm.FirmName + ": " + subject; bool r = EmailDispatcher.SendEmail(emailFrom, subject, new List <string>() { emailFrom, CurrentUserProfile.Email }, errors); return(Json(new { Success = true }, JsonRequestBehavior.AllowGet)); } catch (Exception e) { Debug.Print("Geral Error: " + e.Message); return(Json(new { Success = false, Exception = e.Message }, JsonRequestBehavior.DenyGet)); } }