示例#1
0
        public void setAllotted(ContingentArrival contingentArrival)
        {
            foreach (var x in contingentArrival.RoomAllocation)
            {
                /* Get count */
                int count = 0;
                if (x.Partial < 0)
                {
                    count = x.Room.Capacity;
                }
                else
                {
                    count = x.Partial;
                }

                /* Check sex */
                if (x.Room.LocationNavigation != null &&
                    x.Room.LocationNavigation.Sex != null &&
                    x.Room.LocationNavigation.Sex.ToUpper() == "M")
                {
                    contingentArrival.AllottedMale += count;
                }
                else
                {
                    contingentArrival.AllottedFemale += count;
                }
            }
        }
示例#2
0
        /// <summary>
        /// Fill Links object for ContingentArrival
        /// </summary>
        /// <param name="contingentArrival">ContingentArrival object</param>
        /// <returns></returns>
        public void FillContingentArrivalLinks(ContingentArrival contingentArrival)
        {
            var idObject         = new { id = contingentArrival.ContingentArrivalNo };
            var idObjectBuilding = new { id = contingentArrival.ContingentLeaderNo, cano = contingentArrival.ContingentArrivalNo };
            var desk1obj         = new { cano = contingentArrival.ContingentArrivalNo };

            contingentArrival.Links = new LinkHelper()
                                      .SetOptions(User, typeof(ContingentArrivalsController), Url)
                                      .AddLink(nameof(ContingentArrivalsController.PutContingentArrival), idObject)
                                      .AddLink(nameof(ContingentArrivalsController.DeleteContingentArrival), idObject)
                                      .AddLink(nameof(ContingentArrivalsController.PostCAPerson), desk1obj, "add_caperson")
                                      .AddLink(nameof(ContingentArrivalsController.ApproveContingentArrival), desk1obj, "approve")
                                      .AddLink(nameof(ContingentArrivalsController.UnApproveContingentArrival), desk1obj, "unapprove")

                                      .SetOptions(User, typeof(ContingentsController), Url)
                                      .AddLink(nameof(ContingentsController.GetContingent), new { id = contingentArrival.ContingentLeaderNo }, "contingent")

                                      .SetOptions(User, typeof(ExportController), Url)
                                      .AddLink(nameof(ExportController.GetContingentArrivalBill), idObject, "bill")

                                      .SetOptions(User, typeof(RoomAllocationsController), Url)
                                      .AddLink(nameof(RoomAllocationsController.PostRoomAllocation), null, "create_room_allocation")

                                      .SetOptions(User, typeof(BuildingsController), Url)
                                      .AddLink(nameof(BuildingsController.GetBuildingsExtended), idObjectBuilding, "buildings")
                                      .AddLink(nameof(BuildingsController.GetBuildingsMin), idObjectBuilding, "buildings-min")

                                      .GetLinks();
        }
示例#3
0
        public async Task <IActionResult> PutContingentArrival([FromRoute] int id, [FromBody] ContingentArrival contingentArrival)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != contingentArrival.ContingentArrivalNo)
            {
                return(BadRequest());
            }

            _context.Entry(contingentArrival).State = EntityState.Modified;

            try
            {
                Utilities.Log(_context, HttpContext, $"Update subcontingent #{contingentArrival.ContingentArrivalNo} {contingentArrival.ContingentLeaderNo})", 1, true);
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ContingentArrivalExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            DataUtilities.UpdateWebSock(null, _hubContext);

            return(NoContent());
        }
示例#4
0
        public static int mattress(ContingentArrival ca, string sex)
        {
            int count = 0;

            foreach (RoomAllocation roomA in ca.RoomAllocation.Where(m => m.Room.LocationNavigation.Sex == sex))
            {
                count += raMattress(roomA);
            }
            return(count);
        }
示例#5
0
 public static bool hasPartial(ContingentArrival ca, string sex)
 {
     foreach (RoomAllocation roomA in ca.RoomAllocation.Where(m => m.Room.LocationNavigation.Sex == sex))
     {
         if (roomA.Partial > 0 && roomA.Partial < roomA.Room.Capacity)
         {
             return(true);
         }
     }
     return(false);
 }
示例#6
0
 public static string clName(ContingentArrival ca)
 {
     foreach (Person p in ca.ContingentLeaderNoNavigation.Person)
     {
         if (p.Mino == ca.ContingentLeaderNo)
         {
             return(p.Name);
         }
     }
     return("N/A");
 }
示例#7
0
        private ContingentArrival fillFromExt(ExtContingentArrival extContingentArrival)
        {
            var contingentArrival = new ContingentArrival();

            contingentArrival.CreatedOn          = DateTime.UtcNow.AddHours(5).AddMinutes(30);
            contingentArrival.FillerMiNo         = extContingentArrival.FillerMiNo;
            contingentArrival.Male               = extContingentArrival.Male;
            contingentArrival.Female             = extContingentArrival.Female;
            contingentArrival.MaleOnSpotDemand   = extContingentArrival.MaleOnSpotDemand;
            contingentArrival.FemaleOnSpotDemand = extContingentArrival.FemaleOnSpotDemand;
            contingentArrival.ContingentLeaderNo = extContingentArrival.ContingentLeaderNo;
            return(contingentArrival);
        }
示例#8
0
        public async Task <IActionResult> PostContingentArrival([FromBody] ContingentArrival contingentArrival)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            contingentArrival.CreatedOn = DateTime.UtcNow.AddHours(5).AddMinutes(30);
            _context.ContingentArrival.Add(contingentArrival);
            await _context.SaveChangesAsync();

            new LinksMaker(User, Url).FillContingentArrivalLinks(contingentArrival);
            Utilities.Log(_context, HttpContext, $"Create subcontingent #{contingentArrival.ContingentArrivalNo} {contingentArrival.ContingentLeaderNo})", 0, true);

            return(CreatedAtAction("GetContingentArrival", new { id = contingentArrival.ContingentArrivalNo }, contingentArrival));
        }
示例#9
0
        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));
        }