//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); } }
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; } }
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); } }
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); }