public IActionResult ResetCheckout([FromBody] ResetTeamCheckoutDto data) { try { if (!serverTeamsCore.ServerTeamExists(data.ServerTeamId)) { return(BadRequest("No Server Team with that Id exists")); } UtilityMethods.ValidateLunchOrDinnerSpecification(data.LunchOrDinner); ServerTeamDto team = serverTeamsCore.GetServerTeamById(data.ServerTeamId); if (team.CheckoutHasBeenRun == false) { return(NoContent()); } data.ShiftDate = Convert.ToDateTime(data.StringDate); List <StaffMemberDto> teammates = serverTeamsCore.GetStaffMembersOnServerTeam(data.ServerTeamId); serverTeamsCore.DeleteServerTeamCheckout(data.ServerTeamId); earningsCore.ResetEarningsForServerTeam(teammates, data.ShiftDate, data.LunchOrDinner); return(Ok()); } catch (Exception e) { _logger.LogError(e.Message); ModelState.AddModelError("Reset Checkout Error", e.Message); return(StatusCode(500, ModelState)); } }
public IActionResult RunServerTeamCheckout([FromBody] RunServerTeamCheckoutDto data) { try { if (!serverTeamsCore.ServerTeamExists(data.ServerTeamId)) { ModelState.AddModelError("Team ID Not Found", "No team with that ID was found"); return(BadRequest(ModelState)); } UtilityMethods.ValidateLunchOrDinnerSpecification(data.LunchOrDinner); data.FormattedDate = Convert.ToDateTime(data.StringDate); ServerTeamDto team = serverTeamsCore.GetServerTeamById(data.ServerTeamId); List <StaffMemberDto> teammates = serverTeamsCore.GetStaffMembersOnServerTeam(data.ServerTeamId); //need to reset earnings for the staff memebers if the checkout is being updated earningsCore.ResetEarningsForServerTeam(teammates, data.FormattedDate, data.LunchOrDinner); List <CheckoutEntity> checkouts = checkoutsCore.GetCheckoutEntitiesForATeam(data.ServerTeamId).ToList(); EarningDto earningDto = serverTeamsCore.RunServerTeamCheckout(data, checkouts); TipOutDto tipOutDto = serverTeamsCore.GetServerTeamTipOut(data.ServerTeamId); //The earnings get added to servers here to seperate earnings work into its own section List <EarningDto> earnings = earningsCore.AddServerEarning(teammates, earningDto); ServerTipOutEarningDto tipoutAndEarning = new ServerTipOutEarningDto { TeamTipOut = tipOutDto, ServerEarnings = earnings }; return(CreatedAtRoute("RunCheckout", tipoutAndEarning)); } catch (Exception e) { if (e.InnerException is InvalidOperationException) { ModelState.AddModelError("Invalid Operation", e.Message); return(BadRequest(ModelState)); } else if (e.InnerException is KeyNotFoundException) { ModelState.AddModelError("Key Not Found", e.Message); return(BadRequest(ModelState)); } ModelState.AddModelError("Run CheckoutError", e.Message); return(StatusCode(500, ModelState)); } }
public ServerTeamDto AddServerTeam(CreateServerTeamDto data) { TeamEntity team = new TeamEntity { ShiftDate = Convert.ToDateTime(data.StringDate), LunchOrDinner = data.LunchOrDinner, TeamType = "Server" }; teamRepository.AddTeam(team); UtilityMethods.VerifyDatabaseSaveSuccess(teamRepository); ServerTeamDto teamDto = Mapper.Map <ServerTeamDto>(team); return(teamDto); }
public IActionResult AddServerTeam([FromBody] CreateServerTeamDto data) { try { data.ShiftDate = Convert.ToDateTime(data.StringDate); UtilityMethods.ValidateLunchOrDinnerSpecification(data.LunchOrDinner); ServerTeamDto team = serverTeamsCore.AddServerTeam(data); return(CreatedAtRoute("CreateServerTeam", team)); } catch (Exception e) { if (e.InnerException is InvalidOperationException) { return(BadRequest(e.Message)); } _logger.LogError(e.Message); ModelState.AddModelError("Create Server Team:", e.Message); return(StatusCode(500, ModelState)); } }
public List <ServerTeamGroupedCheckoutsDto> FormatServerTeamGroupCheckouts(ServerTeamDto s, IEnumerable <CheckoutEntity> entities, List <CheckoutOverviewDto> checkouts, List <ServerTeamDto> serverTeams, List <EarningDto> shiftEarnings) { List <ServerTeamGroupedCheckoutsDto> pageData = new List <ServerTeamGroupedCheckoutsDto>(); //Grab the first entity to get a related earning for the team CheckoutEntity checkout = entities.ElementAt(0); if (entities.Count() == 1) { //Mark the teams that have only one server so they can be presented as a solo team ServerTeamGroupedCheckoutsDto soloTeam = new ServerTeamGroupedCheckoutsDto { CheckoutHasBeenRun = s.CheckoutHasBeenRun, IsSoloTeam = true, TeamId = s.Id, TeamEarning = shiftEarnings.FirstOrDefault(e => e.StaffMemberId == checkout.StaffMemberId), }; soloTeam.TeamCheckouts.Add(Mapper.Map <CheckoutOverviewDto>(checkout)); pageData.Add(soloTeam); } else { ServerTeamGroupedCheckoutsDto team = new ServerTeamGroupedCheckoutsDto { CheckoutHasBeenRun = s.CheckoutHasBeenRun, IsSoloTeam = false, TeamId = s.Id, TeamEarning = shiftEarnings.FirstOrDefault(e => e.StaffMemberId == checkout.StaffMemberId) }; foreach (CheckoutEntity c in entities) { team.TeamCheckouts.Add(Mapper.Map <CheckoutOverviewDto>(c)); } pageData.Add(team); } return(pageData); }
public ServerTeamDto GetServerTeamById(int serverTeamId) { ServerTeamDto team = Mapper.Map <ServerTeamDto>(teamRepository.GetTeamById(serverTeamId)); return(team); }