public async Task <CommandResult <List <DownstreamObjectDtoV1_1> > > AggregateObjectsV1_1() { var request = await _responseProcessor.CreateAsync(HttpMethod.Get, $"{_configs["Servers:Catalog"]}/api/object/v1.1/list", true, true, null); try { var response = await _httpClient.SendAsync(request); var objectResult = await _responseProcessor.Process <List <UpstreamObjectDtoV1_1> >(response); if (!objectResult.IsSuccessful) { return(new CommandResult <List <DownstreamObjectDtoV1_1> >(objectResult.Error)); } var originalUserIds = objectResult.Result.Select(o => o.OwnerId).ToList(); var users = await _userService.GetUsersAsync(originalUserIds); var callerUserId = _credentialsGetter.GetCuurentUser().UserId; return(new CommandResult <List <DownstreamObjectDtoV1_1> >(ReplaceUserIdWithUserV1_1(objectResult.Result, users))); } catch (Exception e) { _logger.LogError(e, "Error When getting list of objects"); var message = new ErrorMessage { ErrorCode = "CATALOG.OBJECT.LIST.ERROR", Message = "there were an error while trying to execute your request", StatusCode = System.Net.HttpStatusCode.InternalServerError, }; return(new CommandResult <List <DownstreamObjectDtoV1_1> >(message)); } }
public async Task <CommandResult> SaveImage(IFormFile image) { var savingResult = await _imageSaver.SaveImage(image); if (!savingResult.IsSuccessful) { return(new CommandResult(savingResult.Error)); } var currentUser = _userCredentialsGetter.GetCuurentUser(); var photo = new ProfilePhoto { AddedAtUtc = DateTime.UtcNow, UserId = currentUser.UserId, FilePath = savingResult.Result.Path, AdditionalInformation = QueryString.Create(new Dictionary <string, string> { { "Name", savingResult.Result.Name.ToString() }, { "Version", "1" } }).ToUriComponent(), }; _profileRepo.Add(photo); await _profileRepo.SaveChangesAsync(); return(new CommandResult()); }
public async Task <CommandResult> DeleteObject(DeleteObjectDto objectDto) { if (objectDto is null) { return(new CommandResult(new ErrorMessage { ErrorCode = "CATALOG.OBJECT.DELETE.NULL", Message = "Please send a valid data", StatusCode = System.Net.HttpStatusCode.BadRequest })); } var objectOwner = from o in _objectRepository.Table where o.OfferedObjectId == objectDto.ObjectId select o.OwnerLogin.User; var currentUser = _credentialsGetter.GetCuurentUser(); if (currentUser is null || currentUser.UserId != objectOwner.FirstOrDefault()?.UserId.ToString()) { return(new CommandResult(new ErrorMessage { ErrorCode = "CATALOG.OBJECT.DELETE.UNAUTHORIZED", Message = "You are unauthorized to delete this object", StatusCode = System.Net.HttpStatusCode.Unauthorized })); } return(await AuthorizedDelete(objectDto)); }
public async Task <IActionResult> RefreshToken([FromBody] RefreshRegistrationTokenDto tokenRefresh) { if (tokenRefresh is null) { return(StatusCode(new ErrorMessage { ErrorCode = "TRANSACTION.REGISTRATION.REFRESH.NULL", Message = "Please send valid data", StatusCode = System.Net.HttpStatusCode.BadRequest })); } var user = _credentialsGetter.GetCuurentUser(); if (user == null) { return(StatusCode(new ErrorMessage { ErrorCode = "TRANSACTION.REGISTRATION.REFRESH.USER.UNKOWN", Message = "Please login", StatusCode = System.Net.HttpStatusCode.Unauthorized })); } var registrations = from r in _registrationsRepo.Table where r.Object.OriginalObjectId == tokenRefresh.ObjectId && r.RecipientLogin.UserId == Guid.Parse(user.UserId) && r.Status == ObjectRegistrationStatus.OK && r.ExpiresAtUtc > DateTime.UtcNow && r.ObjectReceiving == null select r; if (!registrations.Any()) { return(StatusCode(new ErrorMessage { ErrorCode = "TRANSACTION.REGISTRATION.REFRESH.NOT.VALID", Message = "You have no valid registration", StatusCode = System.Net.HttpStatusCode.BadRequest })); } var token = await _tokenManager.GenerateToken(registrations.FirstOrDefault().ObjectRegistrationId, TokenType.Receiving); return(Ok(new RegistrationTokenResultDto { CreatedAtUtc = token.IssuedAtUtc, RegistrationToken = token.Token, UseBeforeUtc = token.UseBeforeUtc })); }
public async Task <CommandResult <ObjectDetailsDto> > GetObjectDetails(int objectId) { var filteredObjects = _objectRepo.Table.Where(_queryHelper.IsValidObject); var userId = _credentialsGetter.GetCuurentUser()?.UserId; var objects = from o in filteredObjects where objectId == o.OfferedObjectId orderby o.OfferedObjectId select new ObjectDetailsDto { Id = o.OfferedObjectId, CountOfImpressions = o.Impressions.Count, CountOfViews = o.Views.Count, Description = o.Description, Name = o.Name, Rating = null, OwnerId = o.OwnerLogin.User.UserId.ToString(), Photos = o.Photos.Select(op => _photoConstructor.Construct(op)).ToList(), Tags = o.Tags.Select(ot => ot.Tag.Name).ToList(), Type = o.CurrentTransactionType, CommentsCount = o.Comments.Count, LikesCount = o.Likes.Count, IsLikedByMe = o.Likes.Any(like => like.Login.UserId.ToString() == userId), Comments = (from comment in o.Comments orderby comment.AddedAtUtc descending select new CommentDto { UserId = comment.Login.UserId.ToString(), ObjectId = comment.ObjectId, Comment = comment.Comment, CommentedAtUtc = comment.AddedAtUtc, CommentId = comment.ObjectCommentId }).Take(10).ToList(), }; var @object = await objects.SingleOrDefaultAsync(); if (@object is null) { return(new ErrorMessage { Message = "The object you requested does not exists.", ErrorCode = "CATALOG.OBJECT.DETAILS.NOTFOUND", StatusCode = System.Net.HttpStatusCode.BadRequest }.ToCommand <ObjectDetailsDto>()); } _ = _viewsManager.AddView(@object.Id); return(new CommandResult <ObjectDetailsDto>(@object)); }
public CommandResult <UserProfileDto> GetUserByIds() { var user = _credentialsGetter.GetCuurentUser(); if (user == null) { return(new ErrorMessage { ErrorCode = "USER.PROFILE.USER.UNKOWN", Message = "Please login", StatusCode = System.Net.HttpStatusCode.Unauthorized }.ToCommand <UserProfileDto>()); } var users = from u in _usersRepo.Table where u.Id == user.UserId select new UserProfileDto { Email = u.Email, Name = u.NormalizedName, PictureUrl = _urlConstructor.ConstructOrDefault(u.Photos.OrderByDescending(pp => pp.AddedAtUtc).FirstOrDefault()), Username = u.UserName, Id = u.Id, Gender = u.Gender.ToString(), PhoneNumber = u.PhoneNumber }; var databaseUser = users.FirstOrDefault(); if (databaseUser is null) { return(new ErrorMessage { ErrorCode = "USER.PROFILE.INTERNAL.ERROR", Message = "There were an error while trying to get the user profile", StatusCode = System.Net.HttpStatusCode.InternalServerError }.ToCommand <UserProfileDto>()); } return(new CommandResult <UserProfileDto>(databaseUser)); }