/// <summary> /// Compara se a semana da data passada por parâmtro é a mesma semana atual /// </summary> private bool CompareWeekWithCurrent(DateTime data, VotingDTO votacao) { CultureInfo cult = CultureInfo.CurrentCulture; int semanaVotacao = cult.Calendar.GetWeekOfYear(data.Date, CalendarWeekRule.FirstFullWeek, DayOfWeek.Sunday); int semanaVotacaoAtual = cult.Calendar.GetWeekOfYear(votacao.DateVoting, CalendarWeekRule.FirstFullWeek, DayOfWeek.Sunday); return(semanaVotacao == semanaVotacaoAtual); }
private void VerifyChosenRestaurantOfWeek(VotingDTO voting) { bool weekVote = _winnersOfWeek .Any(x => x.Restaurant.Id == voting.Restaurant.Id && CompareWeekWithCurrent(x.DateVoting, voting)); if (weekVote) { throw new RestaurantOfTheWeekException(Resource.MsgRestauranteEscolhidoSemana); } }
private void VerifyVotingFinished(VotingDTO voting) { bool finishedDate = _winnersOfWeek.Any(x => x.DateVoting.ToString(Resource.DataFormat) == voting.DateVoting.ToString(Resource.DataFormat)); if (finishedDate) { throw new VotingClosedException(Resource.MsgVotacaoEncerrada); } }
public void FinishingVoting() { VotingDTO winner = GetRestaurantDayWinner(); //Define Restaurante Vendedor if (!_winnersOfWeek.Contains(winner)) { winner.IsFinished = true; _winnersOfWeek.Add(winner); } }
public void Vote(VotingDTO voting) { voting.Staff = _staffService.GetByID(voting.Staff.Id); voting.Restaurant = _restaurantService.GetByID(voting.Restaurant.Id); VerifyVotingFinished(voting); RestartVotingLastWeek(voting); VerifyChosenRestaurantOfWeek(voting); VerifyIfEmployeeVoted(voting); _votingService.Save(voting); }
private void VerifyIfEmployeeVoted(VotingDTO votacao) { bool voted = _votingService.GetAll() .Any(x => x.Staff.Id == votacao.Staff.Id && x.DateVoting.Date == votacao.DateVoting.Date); if (voted) { string validMsg = string.Format(Resource.MsgJaVotou, votacao.Staff.StaffName); throw new AlreadyVotedException(validMsg); } }
public void RestartVotingLastWeek(VotingDTO voting = null) { if (voting == null) { _winnersOfWeek.Clear(); } bool sameWeek = _winnersOfWeek.Any(x => CompareWeekWithCurrent(x.DateVoting, voting)); if (!sameWeek) { _winnersOfWeek.Clear(); } }
public ActionResult Votar(VotingDTO votacao) { try { _votacao.Vote(votacao); } catch (System.Exception e) { TempData["Error"] = e.Message; } TempData["ListaVotacao"] = _votacao.ListVoting(); TempData["Parcial"] = _votacao.GetPartial(); TempData["VencedorSemana"] = _votacao.ListWinnersOfWeek(); TempData["Date"] = votacao.DateVoting.ToString("dd/MM/yyyy"); return(Redirect("/")); }
public void Delete(VotingDTO voting) { _repository.Delete(voting); }
public void Save(VotingDTO voting) { _repository.Save(voting); }