public override async Task <Picture?> FindAsync(params object[] id) { if (!(id[0] is int)) { return(null); } return(PictureMapper.MapFromDomain(await RepositoryDbSet.AsNoTracking().FirstOrDefaultAsync(pic => pic.Id == (int)id[0]))); }
public async Task <ReadPictureListResponse> ReadAllAsync(string cursor, string contest) { if (contest != null) { return(PictureMapper.MapPictureStorageListToReadPictureResponseList( await _pictureRepository.ReadAllByContestAsync(cursor, contest))); } return(PictureMapper.MapPictureStorageListToReadPictureResponseList( await _pictureRepository.ReadAllAsync(cursor))); }
public async Task <CreatePictureResponse> CreateAsync(IFormFile picture, string userId, CreatePictureRequest createPictureRequest) { var filePath = Path.GetFullPath(Environment.CurrentDirectory + "/Uploads/" + picture.FileName); if (picture.Length > 0) { using (var stream = new FileStream(filePath, FileMode.Create)) await picture.CopyToAsync(stream); } var result = await _pictureRepository.CreateAsync( PictureMapper.MapCreatePictureRequestToPictureStorage(createPictureRequest, picture.FileName, userId)); return(new CreatePictureResponse { Id = result }); }
public async Task <bool> UpdateAsync(string pictureId, string userId, UpdatePictureRequest updatePictureRequest) { var pictureStorage = PictureMapper.MapUpdatePictureRequestToPictureStorage(updatePictureRequest); var previousPicture = await _pictureRepository.ReadAsync(pictureId); var pictureContest = await _contestRepository.ReadAsync(previousPicture.ContestId); var currentContest = await _contestRepository.ReadSettingsAsync("current"); // Vote has been cast, picture belongs to current contest, user has not already voted for contest if (updatePictureRequest.Vote && pictureContest.Id == currentContest.CurrentId && (pictureContest.Voters == null || pictureContest.Voters.All(x => x != userId))) { if (pictureContest.Voters == null) { pictureContest.Voters = new List <string>(); } pictureContest.Voters.Add(userId); pictureStorage.Votes = previousPicture.Votes + 1; await _contestRepository.UpdateAsync(pictureContest.Id, new ContestStorage { Voters = pictureContest.Voters }); await _pictureRepository.UpdateAsync(pictureId, pictureStorage); return(true); } if (updatePictureRequest.Caption != null) { await _pictureRepository.UpdateAsync(pictureId, pictureStorage); return(true); } return(false); }
public async Task <IEnumerable <Picture> > FindPicturesByPathAsync(string path) { return(await RepositoryDbSet.Where(pic => pic.Path == path).AsNoTracking() .Select(p => PictureMapper.MapFromDomain(p)).ToListAsync()); }
public async Task <ReadPictureResponse> ReadAsync(string id) { return(PictureMapper.MapPictureStorageToReadPictureResponse(await _pictureRepository.ReadAsync(id))); }