public async Task <Result <SafeLocationResponseModel> > Handle(AddSafeLocation request, CancellationToken cancellationToken) { var isValid = await _validator.IsValidAsync(request); if (!isValid) { return(Result.Failure <SafeLocationResponseModel>("Validation failed")); } var group = await _context .Groups .FirstOrDefaultAsync(g => g.Id == request.GroupId, cancellationToken); var groupSafeLocation = new GroupSafeLocation { Latitude = request.SafeLocation.Latitude, Longitude = request.SafeLocation.Longitude, Name = request.SafeLocation.Name, Group = group }; var newLocation = await _context.GroupsSafeLocations.AddAsync(groupSafeLocation, cancellationToken); await _context.SaveChangesAsync(cancellationToken); return(new SafeLocationResponseModel { Latitude = newLocation.Entity.Latitude, Longitude = newLocation.Entity.Longitude, Name = newLocation.Entity.Name, Id = newLocation.Entity.Id, GroupId = newLocation.Entity.Group.Id }); }
public async Task <ActionResult <SafeLocationResponseModel> > CreateNewSafeLocationAsync([FromRoute] Guid groupId, [FromBody] SafeLocationRequest safeLocation) { var sub = User.Claims.FirstOrDefault(c => c.Type == "sub")?.Value; var query = new AddSafeLocation(sub, groupId, safeLocation); var result = await _mediator.Send(query); if (result.IsFailure) { return(BadRequest()); } return(Ok(result.Value)); }