public ActionResult EditTeam(string teamId, string episodeId) { try { TeamEngineDTO team = TeamEngineService.Instance.GetById(teamId); ViewBag.TeamName = team.Nick; List <MetricEngineDTO> metricsDTO = MetricEngineService.Instance.GetByGameId(team.GameId).List.metric; List <GoalEngineDTO> goals = GoalEngineService.Instance.GetByTeamId(teamId).List.goal; if (goals.Count < 1) { foreach (MetricEngineDTO m in metricsDTO) { GoalEngineDTO dto = new GoalEngineDTO(); dto.MetricIcon = m.Icon; dto.MetricId = m.Id; dto.MetricName = m.Name; dto.TeamId = teamId; goals.Add(dto); } } else { List <string> metricIds = new List <string>(); foreach (GoalEngineDTO g in goals) { metricIds.Add(g.MetricId); } foreach (MetricEngineDTO m in metricsDTO) { if (!metricIds.Contains(m.Id)) { GoalEngineDTO dto = new GoalEngineDTO(); dto.MetricIcon = m.Icon; dto.MetricId = m.Id; dto.MetricName = m.Name; dto.TeamId = teamId; goals.Add(dto); } } } return(PartialView("_EditTeam", goals)); } catch (Exception ex) { Logger.LogException(ex); Error("Ocorreu um erro ao tentar adicionar uma meta.", ex); } return(Redirect("/admin/metas")); }
public ActionResult Edit(string playerId, string teamId, string episodeId) { try { PlayerEngineDTO player = PlayerEngineService.Instance.GetById(playerId); ViewBag.WorkerName = player.Nick; List <WorkerTypeMetricDTO> metricsWorkerType = WorkerTypeMetricRepository.Instance.GetAllFromWorkerByPlayerId(playerId); List <MetricEngineDTO> metrics = new List <MetricEngineDTO>(); foreach (WorkerTypeMetricDTO metric in metricsWorkerType) { try { MetricEngineDTO m = MetricEngineService.Instance.GetById(metric.MetricExternalId); metrics.Add(m); } catch (Exception ex) { continue; } } RunEngineDTO run = RunEngineService.Instance.GetRunByPlayerAndTeamId(playerId, teamId); List <GoalEngineDTO> goals = new List <GoalEngineDTO>(); foreach (MetricEngineDTO metric in metrics) { try { GoalEngineDTO goal = GoalEngineService.Instance.GetByRunIdAndMetricId(run.Id, metric.Id); goals.Add(goal); } catch (Exception ex) { GoalEngineDTO goal = new GoalEngineDTO { Goal = 0, MetricId = metric.Id, RunId = run.Id, MetricIcon = metric.Icon, MetricName = metric.Name, }; goals.Add(goal); Logger.LogException(ex); } } return(PartialView("_Edit", goals)); } catch (Exception ex) { Logger.LogException(ex); Error("Ocorreu um erro ao tentar adicionar uma meta.", ex); } return(Redirect("/admin/metas")); }
public void MySqlGoalToEngineByEpisodeId(string episodeId, List <MetricEngineDTO> metrics) { List <GoalDTO> goalsMySql = new List <GoalDTO>(); //GoalRepository.Instance.GetAllByEpisodeId(episodeId); List <GoalEngineDTO> goalsEngine = (from goal in goalsMySql select new GoalEngineDTO { Goal = goal.Goal, MetricIcon = (from metric in metrics where metric.Id == goal.ExternalMetricId select metric.Icon).FirstOrDefault(), MetricId = goal.ExternalMetricId, MetricName = (from metric in metrics where metric.Id == goal.ExternalMetricId select metric.Name).FirstOrDefault(), RunId = goal.RunId, Percentage = 0, ItemId = "" }).ToList(); foreach (GoalEngineDTO goal in goalsEngine) { try { GoalEngineDTO g = GoalEngineService.Instance.GetByRunIdAndMetricId(goal.RunId, goal.MetricId); goal.Id = g.Id; } catch (Exception e) { Debug.Print(e.Message); } GoalEngineService.Instance.CreateOrUpdate(goal); } }
public ActionResult Save(List <GoalEngineDTO> goalList) { try { using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { foreach (GoalEngineDTO goal in goalList) { if (goal.Id == null && goal.Goal >= 0) { MetricEngineDTO metric = MetricEngineService.Instance.GetById(goal.MetricId); GoalEngineDTO goalEngine = new GoalEngineDTO { Goal = goal.Goal, MetricIcon = metric.Icon, MetricId = metric.Id, MetricName = metric.Name, RunId = goal.RunId }; GoalEngineService.Instance.CreateOrUpdate(goalEngine); } else if (goal.Goal >= 0) { GoalEngineDTO goalEngine = GoalEngineService.Instance.GetByRunIdAndMetricId(goal.RunId, goal.MetricId); goalEngine.Goal = goal.Goal; GoalEngineService.Instance.CreateOrUpdate(goalEngine); } } Success("Associação feita com sucesso."); scope.Complete(); } } catch (Exception ex) { Logger.LogException(ex); Error("Ocorreu um erro ao tentar adicionar uma meta.", ex); } return(Redirect("/admin/metas")); }
/// <summary> /// Salva as informações do resultado via arquivo /// </summary> /// <param name="goalArchive"></param> /// <param name="episodeId"></param> /// <returns></returns> private ActionResult SaveGoalArchiveDefault(HttpPostedFileBase goalArchive, string episodeId) { string errors = "Quantidade de erros: {0}<br/>Última linha lida: {1}<br/>"; int line = 1; int countErrors = 0; int countEmptyLines = 0; try { goalArchive.SaveAs(Path.Combine(Server.MapPath("~/App_Data"), goalArchive.FileName)); string path = Path.Combine(Server.MapPath("~/App_Data"), goalArchive.FileName); var archive = new ExcelQueryFactory(path); var rows = from x in archive.WorksheetRange("A1", "D" + rowsCount, "Goals") select x; foreach (var row in rows) { line++; if (countEmptyLines >= 3) { break; } if (row[0] == null || row[0].ToString().Equals("") || row[1] == null || row[1].ToString().Equals("")) { countEmptyLines++; continue; } countEmptyLines = 0; if (row[3].ToString().Equals("0")) { continue; } MetricEngineDTO metric = new MetricEngineDTO(); TeamEngineDTO team = new TeamEngineDTO(); RunEngineDTO run = new RunEngineDTO(); try { metric = MetricEngineService.Instance.GetDTOByGameAndName(CurrentFirm.ExternalId, row[1].ToString()); } catch (Exception e) { errors += "Erro na coluna 2 da linha " + line + "<br/>"; countErrors++; continue; } UserProfileEntity user = UserProfileRepository.Instance.GetByEmail(row[0].Value.ToString()); if (user == null) { errors += "Erro na coluna 1 da linha " + line + "<br/>"; countErrors++; continue; } WorkerEntity worker = WorkerRepository.Instance.GetByUserId(int.Parse(user.Id.ToString())); if (worker == null) { errors += "Erro na coluna 1 da linha " + line + "<br/>"; countErrors++; continue; } try { team = TeamEngineService.Instance.GetByEpisodeIdAndNick(episodeId, row[2].Value.ToString()); } catch (Exception e) { errors += "Erro na coluna 3 da linha " + line + "<br/>"; countErrors++; continue; } try { run = RunEngineService.Instance.GetRunByPlayerAndTeamId(worker.ExternalId, team.Id); } catch (Exception e) { errors += "Jogador " + user.Name + " não está cadastrado no time " + team.Nick + ". Linha: " + line + "<br/>"; countErrors++; continue; } if (!string.IsNullOrWhiteSpace(row[0].ToString()) && !string.IsNullOrWhiteSpace(row[1].ToString()) && !string.IsNullOrWhiteSpace(row[2].ToString()) && !string.IsNullOrWhiteSpace(row[3].ToString())) { GoalEngineDTO goalEngineDTO; try { goalEngineDTO = GoalEngineService.Instance.GetByRunIdAndMetricId(run.Id, metric.Id); goalEngineDTO.Goal = float.Parse(row[3].Value.ToString()); } catch (Exception e) { goalEngineDTO = new GoalEngineDTO { RunId = run.Id, MetricId = metric.Id, MetricIcon = metric.Icon, MetricName = metric.Name, Goal = float.Parse(row[3].Value.ToString()), ItemId = "", Percentage = 0 }; } goalEngineDTO.Goal = float.Parse(row[3].Value.ToString()); goalEngineDTO = GoalEngineService.Instance.CreateOrUpdate(goalEngineDTO); } } errors = string.Format(errors, countErrors, line); string emailFrom = ParameterCache.Get("SUPPORT_EMAIL"); string subject = countErrors >= 1 ? "Erros ao subir planilha de metas" : "O lançamento de metas 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.DenyGet)); } catch (Exception ex) { Logger.LogException(ex); return(Json(new { Success = false }, JsonRequestBehavior.DenyGet)); } }
/// <summary> /// Salva as informações do resultado via arquivo /// </summary> /// <param name="goalArchive"></param> /// <param name="episodeId"></param> /// <returns></returns> private ActionResult SaveGoalArchiveSyngenta(HttpPostedFileBase goalArchive) { string errors = "Quantidade de erros: {0}<br/>Última linha lida: {1}<br/>"; int line = 1; int countErrors = 0; int countEmptyLines = 0; string gameId = CurrentFirm.ExternalId; int CODIGO_TERRITORIO = 0; int RESPONSAVEL = 1; int EMAIL = 2; int REG = 3; int PROMOxISNT = 4; int DIA = 5; int CULTURA = 6; int NOME_PADRAO = 7; int TOTAL = 8; try { goalArchive.SaveAs(Path.Combine(Server.MapPath("~/App_Data"), goalArchive.FileName)); string path = Path.Combine(Server.MapPath("~/App_Data"), goalArchive.FileName); var archive = new ExcelQueryFactory(path); var rows = from x in archive.WorksheetRange("A1", "I" + rowsCount, "META") select x; foreach (var row in rows) { line++; if (countEmptyLines >= 3) { break; } if (row[0] == null || row[0].ToString().Equals("") || row[1] == null || row[1].ToString().Equals("")) { countEmptyLines++; continue; } countEmptyLines = 0; if (row[TOTAL].ToString().Equals("0")) { continue; } MetricEngineDTO metric = new MetricEngineDTO(); TeamEngineDTO team = new TeamEngineDTO(); RunEngineDTO run = new RunEngineDTO(); try { metric = MetricEngineService.Instance.GetDTOByGameAndName(gameId, row[NOME_PADRAO].ToString()); } catch (Exception e) { errors += "Erro na coluna " + (NOME_PADRAO + 1) + " da linha " + line + "<br/>"; countErrors++; continue; } PlayerEngineDTO player; try { player = PlayerEngineService.Instance.GetByEmail(row[EMAIL].Value.ToString()); } catch (Exception e) { errors += "Erro na coluna " + (EMAIL + 1) + " da linha " + line + "<br/>"; countErrors++; continue; } EpisodeEngineDTO episode; try { episode = EpisodeEngineService.Instance.FindByGameIdAndName(gameId, row[CULTURA]); } catch (Exception e) { errors += "Erro na coluna 5 da linha " + line + "<br/>"; countErrors++; continue; } try { team = TeamEngineService.Instance.GetByEpisodeIdAndNick(episode.Id, row[REG].Value.ToString()); } catch (Exception e) { errors += "Erro na coluna 3 da linha " + line + "<br/>"; countErrors++; continue; } try { run = RunEngineService.Instance.GetRunByPlayerAndTeamId(player.Id, team.Id); } catch (Exception e) { errors += "Jogador " + player.Nick + " não está cadastrado no time " + team.Nick + ". Linha: " + line + "<br/>"; countErrors++; continue; } if (!string.IsNullOrWhiteSpace(row[0].ToString()) && !string.IsNullOrWhiteSpace(row[1].ToString()) && !string.IsNullOrWhiteSpace(row[2].ToString()) && !string.IsNullOrWhiteSpace(row[3].ToString())) { GoalEngineDTO goalEngineDTO; try { goalEngineDTO = GoalEngineService.Instance.GetByRunIdAndMetricId(run.Id, metric.Id); goalEngineDTO.Goal = Int32.Parse(row[TOTAL].Value.ToString()); } catch (Exception e) { goalEngineDTO = new GoalEngineDTO { RunId = run.Id, MetricId = metric.Id, MetricIcon = metric.Icon, MetricName = metric.Name, Goal = Int32.Parse(row[TOTAL].Value.ToString()), ItemId = "", Percentage = 0 }; } goalEngineDTO = GoalEngineService.Instance.CreateOrUpdate(goalEngineDTO); } } errors = string.Format(errors, countErrors, line); string emailFrom = ParameterCache.Get("SUPPORT_EMAIL"); string subject = countErrors >= 1 ? "Erros ao subir planilha de metas" : "O lançamento de metas 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.DenyGet)); } catch (Exception ex) { Logger.LogException(ex); return(Json(new { Success = false }, JsonRequestBehavior.DenyGet)); } }
public GoalEngineDTO CreateOrUpdate(GoalEngineDTO goal) { return(PostDTO <GoalEngineDTO>(ref goal)); }
//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)); } }