public async Task <IActionResult> GetDesk1([FromQuery] int id) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var contingentArrival = await _context.ContingentArrival .Include(m => m.CAPeople) .Include(m => m.RoomAllocation) .ThenInclude(m => m.Room) .ThenInclude(m => m.LocationNavigation) .SingleOrDefaultAsync(m => m.ContingentArrivalNo == id); if (contingentArrival == null) { return(NotFound()); } List <string> minos = contingentArrival.CAPeople.Select(m => m.Mino).ToList(); Person[] people = await _context.Person.Where(m => minos.Contains(m.Mino)) .Include(m => m.allottedCA) .ToArrayAsync(); foreach (CAPerson caPerson in contingentArrival.CAPeople) { DataUtilities.FillCAPerson(User, Url, caPerson, people, contingentArrival.ContingentLeaderNo); } var linksMaker = new LinksMaker(User, Url); foreach (var roomA in contingentArrival.RoomAllocation) { linksMaker.FillRoomAllocationLinks(roomA); } setAllotted(contingentArrival); await _context.SaveChangesAsync(); contingentArrival.PeopleFemale = contingentArrival.CAPeople.Count(m => m.Sex.ToUpper() == "F"); contingentArrival.PeopleMale = contingentArrival.CAPeople.Count(m => m.Sex.ToUpper() == "M"); linksMaker.FillContingentArrivalLinks(contingentArrival); return(Ok(contingentArrival)); }
public async Task <IActionResult> ApproveContingentArrival([FromRoute] int cano, [FromBody] ContingentArrival contingentArrivalPut) { var contingentArrival = await _context.ContingentArrival .Include(m => m.CAPeople) .SingleOrDefaultAsync(m => m.ContingentArrivalNo == cano); if (contingentArrival == null || contingentArrival.Approved) { return(NotFound()); } /* Set M/F count from posted data */ contingentArrival.Male = contingentArrivalPut.Male; contingentArrival.Female = contingentArrivalPut.Female; contingentArrival.MaleOnSpotDemand = contingentArrivalPut.MaleOnSpotDemand; contingentArrival.FemaleOnSpotDemand = contingentArrivalPut.FemaleOnSpotDemand; contingentArrival.Remark = contingentArrivalPut.Remark; /* Mark people as done with */ String[] minos = contingentArrival.CAPeople.Select(cap => cap.Mino).ToArray(); Person[] people = await _context.Person.Where(m => minos.Contains(m.Mino)).ToArrayAsync(); var linksMaker = new LinksMaker(User, Url); foreach (CAPerson caPerson in contingentArrival.CAPeople) { linksMaker.FillCAPersonLinks(caPerson); Person person = people.SingleOrDefault(m => m.Mino == caPerson.Mino); if (person != null) { person.allottedCA = contingentArrival; _context.Update(person); } DataUtilities.FillCAPerson(User, Url, caPerson, people, contingentArrival.ContingentLeaderNo, false); } /* Approve! */ contingentArrival.Approved = true; Utilities.Log(_context, HttpContext, $"Approve subcontingent {contingentArrival.ContingentArrivalNo} {contingentArrival.ContingentLeaderNo})", 2, true); await _context.SaveChangesAsync(); DataUtilities.UpdateWebSock(null, _hubContext); linksMaker.FillContingentArrivalLinks(contingentArrival); return(Ok(contingentArrival)); }
public async Task <IActionResult> UnApproveContingentArrival([FromRoute] int cano) { var contingentArrival = await _context.ContingentArrival .Include(m => m.CAPeople) .SingleOrDefaultAsync(m => m.ContingentArrivalNo == cano); if (contingentArrival == null || !contingentArrival.Approved) { return(NotFound()); } /* Mark people as done with */ String[] minos = contingentArrival.CAPeople.Select(cap => cap.Mino).ToArray(); Person[] people = await _context.Person .Include(p => p.allottedCA) .Where(m => minos.Contains(m.Mino)).ToArrayAsync(); var linksMaker = new LinksMaker(User, Url); foreach (CAPerson caPerson in contingentArrival.CAPeople) { linksMaker.FillCAPersonLinks(caPerson); Person person = people.SingleOrDefault(m => m.Mino == caPerson.Mino); if (person != null && person.allottedCA.ContingentArrivalNo == contingentArrival.ContingentArrivalNo) { person.allottedCA = null; _context.Update(person); } DataUtilities.FillCAPerson(User, Url, caPerson, people, contingentArrival.ContingentLeaderNo, false); } /* UnApprove! */ contingentArrival.Approved = false; Utilities.Log(_context, HttpContext, $"Unapprove subcontingent {contingentArrival.ContingentArrivalNo} {contingentArrival.ContingentLeaderNo})", 1, true); await _context.SaveChangesAsync(); DataUtilities.UpdateWebSock(null, _hubContext); linksMaker.FillContingentArrivalLinks(contingentArrival); return(Ok(contingentArrival)); }