Пример #1
0
        //AJOUT D'UNE PROPOSITION
        public async Task AddStatement(string observationId, ObservationCreationModel newStatement, string userId)
        {
            var existingObservation = await this.GetUserObservationbyId(observationId);

            if (existingObservation == null)
            {
                throw new BusinessException("Ce relevé n'existe pas");
            }

            var statement = new ObservationStatement();

            statement.Id = Guid.NewGuid().ToString("N");

            statement.UserId = userId;
            statement.Date   = DateTime.UtcNow;

            if (!string.IsNullOrEmpty(newStatement.Genus))
            {
                var s = (await this.SpeciesManager
                         .GetSpeciesByGenusAsync(newStatement.Genus))
                        .FirstOrDefault();
                statement.CommonGenus = s?.CommonGenus;
                statement.Genus       = s?.Genus;
            }

            if (!string.IsNullOrEmpty(newStatement.Species))
            {
                Species species = await this.SpeciesManager
                                  .GetSpeciesByNameAsync(newStatement.Species);

                statement.CommonSpeciesName = species?.CommonSpeciesName;
                statement.SpeciesName       = species.SpeciesName;
                statement.TelaBotanicaTaxon = species?.TelaBotanicaTaxon;
                statement.Expertise         = await this.CalculateUserSpeciesExpertise(userId, newStatement.Species);
            }

            if (existingObservation.ObservationStatements.Any(s => s.SpeciesName == statement.SpeciesName && s.Genus == statement.Genus))
            {
                throw new BusinessException("Une proposition identique existe déjà");
            }
            statement.TotalScore = statement.CalculateReliabilityStatement();
            statement.Order      = existingObservation.ObservationStatements.Count() + 1;

            statement.TotalScore = statement.CalculateReliabilityStatement();
            existingObservation.ObservationStatements.Add(statement);
            await this.DataContext.Observations.FindOneAndReplaceAsync(o => o.Id == existingObservation.Id, existingObservation);

            await this.CalculateKnowledegePoints(observationId, statement.Id, null);

            await this.CheckObservationIsIdentify(existingObservation.Id);

            User user = await this.UsersManager.SelectAsync(userId);

            var validator = await MissionValidatorFactory.GetValidator(this.ServiceProvider, user);

            if (validator != null)
            {
                await validator?.UpdateMissionProgression(existingObservation, statement, ActionType.CreateStatement);
            }
        }
Пример #2
0
        public async Task CreateStatementAysnc([FromBody] ObservationCreationModel model, string observationId)
        {
            try
            {
                await this.ObservationsManager.AddStatement(observationId, model, this.User.Identity.Name);
            }
            catch (BusinessException be)
            {
                await this.UserNotify.SendErrorNotif(this.User.Identity.Name, be.Message);

                throw be;
            }
        }
Пример #3
0
        public async Task CreateObservationAysnc([FromBody] ObservationCreationModel model)
        {
            try
            {
                var observation = await this.ObservationsManager.CreateObservationAsync(model.Species, model.Genus, this.User.Identity.Name, (Entities.Enums.Confident) model.IsConfident, model.Latitude, model.Longitude,
                                                                                        model.Pictures, model?.TreeSize);

                await this.UserPosition.SendRefresh(observation.Coordinates.Coordinates.Latitude, observation.Coordinates.Coordinates.Longitude);
            }
            catch (BusinessException ex)
            {
                await this.UserNotify.SendErrorNotif(this.User.Identity.Name, ex.Message);
            }
        }
Пример #4
0
        public async Task <bool> UpdateMissionProgression([FromBody] ObservationCreationModel identification, string observationId)
        {
            User user = await this.UsersManager.SelectAsync(this.User.Identity.Name);

            Mission mission = await this.MissionsManager.GetMissionById(user.MissionProgress.MissionId);

            ObservationStatement os = new ObservationStatement
            {
                Genus       = identification.Genus,
                SpeciesName = identification.Species
            };
            var result    = false;
            var validator = await MissionValidatorFactory.GetValidator(this.ServiceProvider, user);

            if (validator != null)
            {
                result = await((IdentifyMissionValidator)validator).UpdateIdentifyMissionProgression(observationId, mission, os, user.OsmId);
            }
            return(result);
        }