示例#1
0
        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
            });
        }
示例#2
0
        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));
        }