示例#1
0
        public async Task <ActionResult <UULResponse> > AddHabitant(HabitantDTO habitantDTO) // TODO check rules before adding
        {
            var         currentUser = HttpContext.User;
            UULResponse response;

            try {
                var userInfo = SecHelper.GetUserInfo(currentUser.Claims);
                var user     = await _context.Users.Where(u => u.Login.Equals(userInfo.Login) && u.ApartmentCode.Equals(userInfo.ApartmentCode)).SingleOrDefaultAsync();

                if (user == null)
                {
                    return(Error.ProfileNotFound.CreateErrorResponse(_logger, "AddHabitant"));
                }
                var habitant = new Habitant(habitantDTO)
                {
                    User = user
                };
                _context.Habitants.Add(habitant);
                await _context.SaveChangesAsync();

                var habitants = await _context.Habitants.Where(h => h.User.ID == user.ID).Select(h => new HabitantDTO(h)).ToListAsync();

                userInfo.IsActivated = user.IsActivated;
                userInfo.Habitants   = habitants;
                response             = new UULResponse()
                {
                    Success = true, Message = "Habitant was added", Data = userInfo
                };
            } catch (Exception e) {
                response = Error.ProfileAddHabitantFailed.CreateErrorResponse(_logger, "AddHabitant", e);
            }
            return(response);
        }
示例#2
0
文件: UserDao.cs 项目: nxn777/uul-api
        public static User AddFromDto(UULContext context, NewUserDTO newUser)
        {
            var salt = SecHelper.CreateSalt();

            var habitant = new Habitant(newUser);

            context.Habitants.Add(habitant);

            var userToSave = new User {
                Login         = newUser.Login,
                IsActivated   = false,
                CreatedAt     = DateOperations.Now(),
                Hash          = SecHelper.SaltAndHashPwd(newUser.Pwd, salt),
                Salt          = salt,
                ApartmentCode = newUser.ApartmentCode,
                Habitants     = new List <Habitant>()
                {
                    habitant
                }
            };

            context.Users.Add(userToSave);

            return(userToSave);
        }
        public IHttpActionResult Post([FromBody] Habitant habitant)
        {
            try
            {
                if (habitant == null)
                {
                    return(BadRequest("Habitant cannot be null"));
                }

                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                var habitantRepository = new Models.HabitantRepository();
                var newHabitant        = habitantRepository.Save(habitant);
                if (newHabitant == null)
                {
                    return(Conflict());
                }
                return(Created <Habitant>(Request.RequestUri + newHabitant.HabitantId.ToString(),
                                          newHabitant));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
        // PUT: api/Habitants/5
        public IHttpActionResult Put(int id, [FromBody] Habitant habitant)
        {
            try
            {
                if (habitant == null)
                {
                    return(BadRequest("Habitant cannot be null"));
                }
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                var habitantRepository = new Models.HabitantRepository();
                var updatedHabitant    = habitantRepository.Save(id, habitant);
                if (updatedHabitant == null)
                {
                    return(NotFound());
                }
                return(Ok());
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
 public async Task Validate(Habitant habitant)
 {
     if (!await ExistHabitantAsync(habitant).ConfigureAwait(false))
     {
         habitant.AddBrokenRule("Habitant not found");
         habitant.Validate("Can not delete habitant");
     }
 }
示例#6
0
 private void Awake()
 {
     for (int i = 0; i < nbRefugies; i++)
     {
         Habitant habitant = Instantiate(h);
         GameVariables.nbHabitants += 1;
         GameVariables.listHabitant.Add(habitant);
     }
 }
        /// <summary>
        /// Creates a new habitant with default values
        /// </summary>
        /// <returns></returns>
        internal Habitant Create()
        {
            Habitant habitant = new Habitant
            {
                CreateDate = DateTime.Now
            };

            return(habitant);
        }
示例#8
0
        protected override async Task <Result> HandleEx(DeleteHabitantCommand command, CancellationToken cancellationToken = default)
        {
            var habitant = new Habitant(new HabitantId(command.HabitantId));

            await habitantDeleteValidator.Validate(habitant).ConfigureAwait(false);

            await habitantRepository.DeleteAsync(habitant.Id).ConfigureAwait(false);

            return(Result.Ok());
        }
        public Habitant CreatHabitants()
        {
            Habitant h = new Habitant();

            h.nom = _demandeAutilisateur.saisieNom("Nom de l'habitant :");
            h.age = _demandeAutilisateur.saisieEntier("Quel age as t'il ? :");

            ListeHabitants.Add(h);
            return(h);
        }
示例#10
0
        public async Task Validate(Habitant habitant)
        {
            if (await ExistHabitantWithNameAsync(habitant.Name).ConfigureAwait(false))
            {
                habitant.AddBrokenRule("Habitant with the same name found");
            }

            await CheckCommonDataForUpdateAndInsert(habitant);

            habitant.Validate("Can not create habitant");
        }
        /// <summary>
        /// Saves a new habitant.
        /// </summary>
        /// <param name="habitant"></param>
        /// <returns></returns>
        internal Habitant Save(Habitant habitant)
        {
            // Read in the existing habitants
            var habitants = this.Retrieve();

            // Assign a new Id
            var maxId = habitants.Max(p => p.HabitantId);

            habitant.HabitantId = maxId + 1;
            habitants.Add(habitant);

            WriteData(habitants);
            return(habitant);
        }
示例#12
0
        public static Habitant CreateFromCommand(int id, Commands.Dto.Habitant habitantCommand)
        {
            var habitant = new Habitant(new HabitantId(id))
            {
                Name        = HabitantName.FromString(habitantCommand.Name),
                Thumbnail   = new System.Uri(habitantCommand.Thumbnail),
                Age         = habitantCommand.Age,
                Weight      = habitantCommand.Weight,
                Height      = habitantCommand.Height,
                HairColor   = new HairColor(new HairColorId(habitantCommand.HairColor)),
                Professions = habitantCommand.Professions
                              .Select(p => new Profession(new ProfessionId(p))).ToList(),
                Friends = new List <HabitantName>()
            };

            return(habitant);
        }
    public void affectation()
    {
        if (GameVariables.listHabitant.Count != 0 && GameVariables.batimentSelectionne.ListHabitants.Count < GameVariables.batimentSelectionne.nbrMaxHab)
        {
            clone = GameVariables.listHabitant[0];
            clone.random_object.SetActive(false);
            Destroy(clone.random_object);
            GameVariables.listHabitant.Remove(clone);
            clone.Spawn = GameVariables.batimentSelectionne;
            GameObject o = clone.GetComponent <Role>().changementRole(GameVariables.batimentSelectionne.typeHabitant.ToString());
            GameVariables.listHabitantAffecte.Add(clone);

            switch (GameVariables.batimentSelectionne.typeHabitant.ToString())
            {
            case "Combattant":
                GameVariables.listCombattant.Add(o.GetComponent <Combattant>());
                break;

            case "Fermier":
                GameVariables.listFermier.Add(o.GetComponent <Fermier>());
                break;

            case "Mineur":
                GameVariables.listMineur.Add(o.GetComponent <Mineur>());
                break;

            case "Bucheron":
                GameVariables.listBucheron.Add(o.GetComponent <Bucheron>());
                break;

            case "Marchand":
                GameVariables.listMarchand.Add(o.GetComponent <Marchand>());
                break;

            case "Pretre":
                GameVariables.listPretre.Add(o.GetComponent <Pretre>());
                break;
            }

            GameVariables.batimentSelectionne.ListHabitants.Add(o);
        }
    }
    //Milicia
    void addFirstFoundHabitantForType(Batiment.role type)
    {
        if (GameVariables.listHabitant.Count == 0 && GameVariables.batimentSelectionne.ListHabitants.Count < GameVariables.batimentSelectionne.nbrMaxHab)
        {
            return;
        }


        Batiment batiment = null;

        foreach (Batiment bat in GameVariables.listBatiment)
        {
            if (!bat.isEnDeplacement() && bat.typeHabitant == type && bat.ListHabitants.Count < bat.nbrMaxHab)
            {
                batiment = bat;
                break;
            }
        }

        if (batiment == null || batiment.ListHabitants.Count >= batiment.nbrMaxHab)
        {
            return;
        }

        List <Habitant> listMetierBat = GameVariables.getListMetier(batiment.typeHabitant);

        if (listMetierBat == null)
        {
            return;
        }

        Habitant villager = GameVariables.listHabitant[0];

        GameVariables.listHabitant.Remove(villager);

        villager.Spawn = batiment;
        GameObject o = villager.GetComponent <Role>().changementRole(batiment.typeHabitant.ToString());

        GameVariables.listHabitantAffecte.Add(villager);
        listMetierBat.Add(villager);
        batiment.ListHabitants.Add(o);
    }
        /// <summary>
        /// Updates an existing habitant
        /// </summary>
        /// <param name="id"></param>
        /// <param name="habitant"></param>
        /// <returns></returns>
        internal Habitant Save(int id, Habitant habitant)
        {
            // Read in the existing habitants
            var habitants = this.Retrieve();

            // Locate and replace the item
            var itemIndex = habitants.FindIndex(p => p.HabitantId == habitant.HabitantId);

            if (itemIndex > 0)
            {
                habitants[itemIndex] = habitant;
            }
            else
            {
                return(null);
            }

            WriteData(habitants);
            return(habitant);
        }
        protected async Task CheckCommonDataForUpdateAndInsert(Habitant habitant)
        {
            if (!await ExistHairColorForHabitant(habitant).ConfigureAwait(false))
            {
                habitant.AddBrokenRule("Defined Hair Color for habitant does not exist");
            }

            if (!await ExistProfessionsForHabitant(habitant).ConfigureAwait(false))
            {
                habitant.AddBrokenRule("Defined Professions for habitant does not exist");
            }

            foreach (var friend in habitant.Friends)
            {
                if (!await ExistHabitantWithNameAsync(friend).ConfigureAwait(false))
                {
                    habitant.AddBrokenRule($"Friend '{friend}' not found");
                }
            }
        }
    void removeFirstFoundHabitantForType(Batiment.role type)
    {
        Batiment batiment = null;

        foreach (Batiment bat in GameVariables.listBatiment)
        {
            if (!bat.isEnDeplacement() && bat.typeHabitant == type && bat.ListHabitants.Count > 0)
            {
                Debug.Log(batiment);
                batiment = bat; break;
            }
        }

        if (batiment == null || batiment.ListHabitants.Count <= 0)
        {
            return;
        }

        GameObject o = batiment.ListHabitants[0];

        if (o.GetComponent <Habitant>() == null)
        {
            return;
        }

        List <Habitant> listMetierBat = GameVariables.getListMetier(batiment.typeHabitant);

        if (listMetierBat == null)
        {
            return;
        }

        Habitant villager = o.GetComponent <Habitant>();

        batiment.ListHabitants.Remove(o);
        listMetierBat.Remove(villager);
        GameVariables.listHabitantAffecte.Remove(villager);

        villager.GetComponent <Role>().changementRole(Batiment.role.Habitant.ToString());
        GameVariables.listHabitant.Add(villager);
    }
示例#18
0
    //Private Functions
    private void initUI()
    {
        //Set Title Text
        titleText.text = GameVariables.batimentSelectionne.nomBatiment;
        //Set Desc Text
        descText.text = GameVariables.batimentSelectionne.description;

        //Check Effectifs UI Needed + Set Pop Manager Actions
        if (GameVariables.batimentSelectionne.nbrMaxHab != 0)
        {
            buildingPopulationManager.gameObject.SetActive(true);
            buildingPopulationManager.gameObject.GetComponent <RectTransform>().localScale = new Vector3(1, 1, 1);
            secondSeparator.gameObject.SetActive(true);
            secondSeparator.gameObject.GetComponent <RectTransform>().localScale = new Vector3(1, 1, 1);

            buildingPopulationManager.setUpAction(() => {
                if (GameVariables.listHabitant.Count == 0)
                {
                    return;
                }

                Batiment batiment = GameVariables.batimentSelectionne;
                if (batiment == null || batiment.isEnDeplacement() || batiment.ListHabitants.Count >= batiment.nbrMaxHab)
                {
                    return;
                }

                List <Habitant> listMetierBat = GameVariables.getListMetier(batiment.typeHabitant);
                if (listMetierBat == null)
                {
                    return;
                }

                Habitant villager = GameVariables.listHabitant[0];
                GameVariables.listHabitant.Remove(villager);

                villager.Spawn = batiment;
                GameObject o   = villager.GetComponent <Role>().changementRole(batiment.typeHabitant.ToString());
                GameVariables.listHabitantAffecte.Add(villager);
                listMetierBat.Add(villager);
                batiment.ListHabitants.Add(o);
            });

            buildingPopulationManager.setDownAction(() => {
                Batiment batiment = GameVariables.batimentSelectionne;
                if (batiment == null || batiment.isEnDeplacement())
                {
                    return;
                }
                if (batiment.ListHabitants.Count == 0)
                {
                    return;
                }

                GameObject o = batiment.ListHabitants[0];

                if (o.GetComponent <Habitant>() == null)
                {
                    return;
                }

                List <Habitant> listMetierBat = GameVariables.getListMetier(batiment.typeHabitant);
                if (listMetierBat == null)
                {
                    return;
                }

                Habitant villager = o.GetComponent <Habitant>();
                batiment.ListHabitants.Remove(o);
                listMetierBat.Remove(villager);
                GameVariables.listHabitantAffecte.Remove(villager);

                villager.GetComponent <Role>().changementRole(Batiment.role.Habitant.ToString());
                GameVariables.listHabitant.Add(villager);
            });
        }
        else
        {
            buildingPopulationManager.gameObject.SetActive(false);
            buildingPopulationManager.gameObject.GetComponent <RectTransform>().localScale = new Vector3(0, 0, 0);
            secondSeparator.gameObject.SetActive(false);
            secondSeparator.gameObject.GetComponent <RectTransform>().localScale = new Vector3(0, 0, 0);
        }

        //Check Prod UI Needed
        if (GameVariables.batimentSelectionne is BatimentRessource)
        {
            buildingProdUI.gameObject.SetActive(true);
            buildingProdUI.gameObject.GetComponent <RectTransform>().localScale = new Vector3(1, 1, 1);
            thirdSeparator.gameObject.SetActive(true);
            thirdSeparator.gameObject.GetComponent <RectTransform>().localScale = new Vector3(1, 1, 1);
        }
        else
        {
            buildingProdUI.gameObject.SetActive(false);
            buildingProdUI.gameObject.GetComponent <RectTransform>().localScale = new Vector3(0, 0, 0);
            thirdSeparator.gameObject.SetActive(false);
            thirdSeparator.gameObject.GetComponent <RectTransform>().localScale = new Vector3(0, 0, 0);
        }

        //Check Upgrade UI Needed + Set Upgrade Action
        if (GameVariables.batimentSelectionne.batUpgrade != null)
        {
            buildingUpgradeUI.gameObject.SetActive(true);
            buildingUpgradeUI.gameObject.GetComponent <RectTransform>().localScale = new Vector3(1, 1, 1);

            buildingUpgradeUI.setUpgradeAction(() => {
                GameVariables.batimentSelectionne.upgradeStructure();
            });
        }
        else
        {
            buildingUpgradeUI.gameObject.SetActive(false);
            buildingUpgradeUI.gameObject.GetComponent <RectTransform>().localScale = new Vector3(0, 0, 0);
        }
    }
 public void spawnHabitant()
 {
     clone = Instantiate(habitant, new Vector3(0, 0, 0), Quaternion.identity);
     GameVariables.listHabitant.Add(clone);
     GameVariables.nbHabitants++;
 }
 protected async Task <bool> ExistHabitantWithNameAsync(Habitant habitant)
 {
     return((await habitantReadOnlyRepository.GetOtherHabitantWithNameSingleAsync(habitant.Name, habitant.Id).ConfigureAwait(false)).HasValue);
 }
        protected async Task <bool> ExistProfessionsForHabitant(Habitant habitant)
        {
            var allProfessions = await professionReadonlyRepository.GetAllAsync().ConfigureAwait(false);

            return(habitant.Professions.All(p => allProfessions.Contains(p)));
        }
示例#22
0
        private async Task <ActionResult <UULResponse> > BookTimeSlotByGym(BookTimeSlotDTO dto, int gymId)
        {
            UULResponse response; // TODO refactor to use exceptions
            var         currentUser = HttpContext.User;

            try {
                var userInfo = SecHelper.GetUserInfo(currentUser.Claims);
                var user     = await _context.Users.Where(u => u.Login.Equals(userInfo.Login) && u.ApartmentCode.Equals(userInfo.ApartmentCode)).SingleOrDefaultAsync();

                if (user is null)
                {
                    return(Error.ProfileNotFound.CreateErrorResponse(_logger, "BookTimeSlotsByGym"));
                }
                if (!user.IsActivated)
                {
                    return(Error.ProfileNotActivated.CreateErrorResponse(_logger, "BookTimesSlotsByGym"));
                }
                var timeSlot = await _context.TimeSlots
                               .Include(t => t.OccupiedBy)
                               .Include(t => t.Gym)
                               .FirstOrDefaultAsync(t => t.ID == dto.TimeslotId);

                if (timeSlot is null)
                {
                    return(Error.TimeSlotNotFound.CreateErrorResponse(_logger, "BookTimesSlotsByGym"));
                }
                var rulesDto = await RulesDao.GetCurrentRulesDTOOrDefault(_context);

                if (rulesDto is null)
                {
                    return(Error.RulesNotFound.CreateErrorResponse(_logger, "BookTimesSlotsByGym"));
                }
                DateOperations.GetTodayTimeSlotsBoundsUtc(rulesDto.TimeSlotSpan, out DateTime todayStart, out DateTime todayEnd);

                if (!timeSlot.Gym.IsOpen)
                {
                    return(Error.GymClosed.CreateErrorResponse(_logger, "BookTimesSlotsByGym"));
                }
                if (!(timeSlot.Start.IsWithinBounds(todayStart, todayEnd)))
                {
                    return(Error.TimeSlotNotToday.CreateErrorResponse(_logger, "BookTimesSlotsByGym"));
                }
                if (timeSlot.OccupiedBy.Count >= rulesDto.PersonsPerTimeSlot)
                {
                    return(Error.TimeSlotFull.CreateErrorResponse(_logger, "BookTimesSlotsByGym"));
                }
                if (await AlreadyBookedInBoundsUTC(dto.HabitantId, todayStart, todayEnd))
                {
                    return(Error.TimeSlotOverbooking.CreateErrorResponse(_logger, "BookTimesSlotsByGym"));
                }

                Habitant habitant = await _context.Habitants.FindAsync(dto.HabitantId);

                if (habitant is null)
                {
                    return(Error.ProfileHabitantLookupFailed.CreateErrorResponse(_logger, "BookTimesSlotsByGym"));
                }
                timeSlot.OccupiedBy.Add(habitant);
                habitant.LastGymVisit = timeSlot.Start;
                _context.TimeSlots.Update(timeSlot);
                _context.Habitants.Update(habitant);
                var success = await _context.SaveChangesAsync() != 0;

                var slots = gymId == -1 ? await TimeSlotsDao.GetTimeSlotsByUtcBounds(_context, todayStart, todayEnd) : await TimeSlotsDao.GetTimeSlotsByUtcBounds(_context, gymId, todayStart, todayEnd);

                var data = new ScheduleDTO()
                {
                    Date = todayStart.Year + "/" + todayStart.Month + "/" + todayStart.Day, GymId = gymId == -1 ? null : gymId, TimeSlots = slots
                };
                response = new UULResponse()
                {
                    Success = success, Message = "Booked", Data = data
                };
            } catch (Exception e) {
                response = Error.TimeSlotsBookingFailed.CreateErrorResponse(_logger, "BookTimesSlotsByGym", e);
            }
            return(response);
        }
 protected async Task <bool> ExistHairColorForHabitant(Habitant habitant)
 {
     return((await hairColorReadonlyRepository.FindAsync(habitant.HairColor.Id).ConfigureAwait(false)).HasValue);
 }
示例#24
0
 public void addHabitant(Habitant theHabitant)
 {
     habitants.Add(theHabitant);
 }
示例#25
0
        public async Task <ActionResult> UpdateHabitant(int habitantId, [FromBody] Habitant habitant, [FromServices] ICommandDispatcher commandDispatcher)
        {
            await commandDispatcher.Dispatch(new UpdateHabitantCommand(habitantId, habitant)).ConfigureAwait(false);

            return(Ok());
        }
 public Automate_Habitant(Habitant habitant)
 {
     this.habitant = habitant;
     target        = null;
     courant       = new EtatHabitantRechercheWaypoint(this);
 }