コード例 #1
0
        public async Task <IFileResponse> GetMeetupImageAsync(int MeetupId)
        {
            try
            {
                var meetupData = await _appDbContext.Meetups.FirstOrDefaultAsync(e => e.Id == MeetupId);

                var file = await _appDbContext.Files.FirstOrDefaultAsync(k => k.Id == meetupData.MeetupPictureID);

                if (file == null)
                {
                    return(new FileResponse(ClientMessageConstant.FileNotFound, HttpStatusCode.NotFound));
                }

                var fileDb = await _fileDbContext.FileDB.FirstOrDefaultAsync(k => k.Id == file.IdGuid);

                var model = new FileView()
                {
                    Id            = file.Id,
                    IdGuid        = file.IdGuid,
                    FileBytes     = fileDb?.Bytes,
                    Name          = file.Name,
                    CorrelationId = file.CorrelationId,
                    MimeType      = file.MimeType,
                    SizeMb        = file.SizeMb,
                    ExtraParams   = file.ExtraParams
                };

                return(new FileResponse(model));
            }
            catch (Exception e)
            {
                return(new FileResponse(e));
            }
        }
コード例 #2
0
        public async Task <IFileResponse> DownloadVideoAsync(int profileId)
        {
            try
            {
                var profile = await _appDbContext.Profiles.FirstOrDefaultAsync(k => k.Id == profileId);

                int.TryParse(profile.ExpressYourselfUrl, out var fileId);

                var file = await _appDbContext.Files.FirstOrDefaultAsync(k => k.Id == fileId).ConfigureAwait(false);

                if (file == null)
                {
                    return(new FileResponse(ClientMessageConstant.FileNotFound, HttpStatusCode.NotFound));
                }

                var fileDb = await _fileDbContext.FileDB.FirstOrDefaultAsync(k => k.Id == file.IdGuid).ConfigureAwait(false);

                var model = new FileView()
                {
                    Id            = file.Id,
                    IdGuid        = file.IdGuid,
                    FileBytes     = fileDb.Bytes,
                    Name          = file.Name,
                    CorrelationId = file.CorrelationId,
                    MimeType      = file.MimeType,
                    SizeMb        = file.SizeMb,
                    ExtraParams   = file.ExtraParams
                };
                return(new FileResponse(model));
            }
            catch (Exception e)
            {
                return(new FileResponse(e));
            }
        }
コード例 #3
0
        public async Task <IFileResponse> GetFileAsync(string fileId)
        {
            try
            {
                logger.Info($"{ GetType().Name}  {  ExtensionUtility.GetCurrentMethod() }  FileID: {fileId} UserIPAddress: {  _userIPAddress.GetUserIP().Result }");

                var fileDb = await _fileDbContext.FileDB.FirstOrDefaultAsync(k => k.Id == new Guid(fileId));

                if (fileDb == null)
                {
                    return(new FileResponse(ClientMessageConstant.FileNotFound, HttpStatusCode.NotFound));
                }

                var file = await _appDbContext.Files.FirstOrDefaultAsync(k => k.IdGuid == fileDb.Id);

                var model = new FileView()
                {
                    Id            = file.Id,
                    IdGuid        = file.IdGuid,
                    FileBytes     = fileDb.Bytes,
                    Name          = file.Name,
                    CorrelationId = file.CorrelationId,
                    MimeType      = file.MimeType,
                    SizeMb        = file.SizeMb,
                    ExtraParams   = file.ExtraParams
                };

                return(new FileResponse(model));
            }
            catch (Exception e)
            {
                logger.Error(e);
                return(new FileResponse(e));
            }
        }
コード例 #4
0
        public async Task <IFileResponse> GetAssessmentImageAsync(int assessmentId)
        {
            try
            {
                var assessment = await _appDbContext.AssessmentTools.FirstOrDefaultAsync(x => x.Id == assessmentId);

                var file = await _appDbContext.Files.FirstOrDefaultAsync(k => k.IdGuid == assessment.ImageId);

                if (file == null)
                {
                    return(new FileResponse(ClientMessageConstant.FileNotFound, HttpStatusCode.NotFound));
                }

                var fileDb = await _fileDbContext.FileDB.FirstOrDefaultAsync(k => k.Id == file.IdGuid);

                var model = new FileView()
                {
                    Id            = file.Id,
                    IdGuid        = file.IdGuid,
                    FileBytes     = fileDb.Bytes,
                    Name          = file.Name,
                    CorrelationId = file.CorrelationId,
                    MimeType      = file.MimeType,
                    SizeMb        = file.SizeMb,
                    ExtraParams   = file.ExtraParams
                };

                return(new FileResponse(model));
            }
            catch (Exception e)
            {
                return(new FileResponse(e));
            }
        }
コード例 #5
0
        public async Task <IFileResponse> GetPostFileAsync(string fileId)
        {
            try
            {
                var bucket = new GridFSBucket(_mongoDbContext.Database);
                var file   = new FileView();
                using (var stream = await bucket.OpenDownloadStreamAsync(new ObjectId(fileId)))
                {
                    if (stream == null)
                    {
                        return(new FileResponse(ClientMessageConstant.FileNotFound, HttpStatusCode.NotFound));
                    }
                    file.FileBytes = await bucket.DownloadAsBytesAsync(new ObjectId(fileId));

                    file.Name     = stream.FileInfo.Filename;
                    file.MimeType = stream.FileInfo.ContentType;
                }

                return(new FileResponse(file));
            }
            catch (Exception e)
            {
                return(new FileResponse(e));
            }
        }
コード例 #6
0
 private static void GetResponse(int id,
                                 DeleteDocumentView model, ref FileView response)
 {
     response.DocumentType    = model.DocumentType;
     response.Id              = id;
     response.IsSuccess       = true;
     response.ResponseMessage = "Success";
 }
コード例 #7
0
        private static FileView GetResponse(int id,
                                            DocumentType type, IFormFile file)
        {
            var response = new FileView
            {
                DocumentType    = type,
                Name            = file.FileName,
                Id              = id,
                IsSuccess       = true,
                ResponseMessage = "Success"
            };

            return(response);
        }
コード例 #8
0
        public async Task <IFileResponse> GetMessagingImageFileAsync(string roomId)
        {
            try
            {
                var file = new FileView();
                var room = await _mongoDbContext.Rooms.Find(k => k.ID == new ObjectId(roomId)).FirstOrDefaultAsync();

                if (room == null)
                {
                    return(new FileResponse(ClientMessageConstant.PostNotFound, HttpStatusCode.NotFound));
                }

                //if (room.Messages. == (int)PostType.Image)
                //{
                var fileId = room.Messages.FirstOrDefault().ImagesIDs.ToString();

                if (fileId == null)
                {
                    return(new FileResponse(file));
                }

                var bucket = new GridFSBucket(_mongoDbContext.Database);

                using (var stream = await bucket.OpenDownloadStreamAsync(new ObjectId(fileId)))
                {
                    if (stream == null)
                    {
                        return(new FileResponse(ClientMessageConstant.FileNotFound, HttpStatusCode.NotFound));
                    }
                    file.FileBytes = await bucket.DownloadAsBytesAsync(new ObjectId(fileId));

                    file.Name     = stream.FileInfo.Filename;
                    file.MimeType = stream.FileInfo.ContentType;
                }
                //}
                //else
                //{
                //  return new FileResponse(ClientMessageConstant.ImagePostNotExist, HttpStatusCode.NotFound);
                //}


                return(new FileResponse(file));
            }
            catch (Exception e)
            {
                return(new FileResponse(e));
            }
        }
コード例 #9
0
        public async Task <IFileResponse> GetPostImageAsync(string postId)
        {
            try
            {
                var file = new FileView();
                var post = await _mongoDbContext.Posts.Find(k => k.ID == new ObjectId(postId)).FirstOrDefaultAsync();

                if (post == null)
                {
                    return(new FileResponse(ClientMessageConstant.PostNotFound, HttpStatusCode.NotFound));
                }

                if (post.TypeID == (int)PostType.Image)
                {
                    var fileId = post.ImageIDs.FirstOrDefault();

                    if (fileId == null)
                    {
                        return(new FileResponse(file));
                    }

                    var bucket = new GridFSBucket(_mongoDbContext.Database);

                    using (var stream = await bucket.OpenDownloadStreamAsync(new ObjectId(fileId)))
                    {
                        if (stream == null)
                        {
                            return(new FileResponse(ClientMessageConstant.FileNotFound, HttpStatusCode.NotFound));
                        }
                        file.FileBytes = await bucket.DownloadAsBytesAsync(new ObjectId(fileId));

                        file.Name     = stream.FileInfo.Filename;
                        file.MimeType = stream.FileInfo.ContentType;
                    }
                }
                else
                {
                    return(new FileResponse(ClientMessageConstant.ImagePostNotExist, HttpStatusCode.NotFound));
                }
                return(new FileResponse(file));
            }
            catch (Exception e)
            {
                return(new FileResponse(e));
            }
        }
コード例 #10
0
        public async Task <IFileResponse> DeleteDocumentsAsync(List <DeleteDocumentView> models)
        {
            var allResponse = new List <FileView>();

            try
            {
                var profileId = models.FirstOrDefault()?.UserId ?? 0;

                var profile = await _appDbContext.Profiles.FirstOrDefaultAsync(k => k.Id == profileId);

                if (profile == null)
                {
                    return(new FileResponse(ClientMessageConstant.ProfileNotExist, HttpStatusCode.NotFound));
                }

                foreach (var model in models)
                {
                    var response = new FileView();
                    try
                    {
                        var file = await _appDbContext.Files.FirstOrDefaultAsync(k => k.Id == model.Id);

                        if (file == null)
                        {
                            GetResponse(model.Id, model, ref response);
                            continue;
                        }
                        var fileDb = await _fileDbContext.FileDB.FirstOrDefaultAsync(k => k.Id == file.IdGuid);

                        if (fileDb != null)
                        {
                            _fileDbContext.FileDB.Remove(fileDb);
                            await _fileDbContext.SaveChangesAsync();
                        }

                        _appDbContext.Files.Remove(file);
                        await _appDbContext.SaveChangesAsync();

                        switch (model.DocumentType)
                        {
                        case DocumentType.Passport:
                            profile.PassportFileId = null;
                            GetResponse(model.Id, model, ref response);
                            break;

                        case DocumentType.Education:
                            profile.LastEducationCertificateFileId = null;
                            GetResponse(model.Id, model, ref response);

                            break;

                        case DocumentType.CV:
                            profile.CvfileId = null;
                            GetResponse(model.Id, model, ref response);

                            break;

                        case DocumentType.Emirates:
                            profile.UaeidfileId = null;
                            GetResponse(model.Id, model, ref response);

                            break;

                        case DocumentType.FamilyBook:
                            profile.FamilyBookFileId = null;
                            GetResponse(model.Id, model, ref response);
                            break;
                        }
                    }
                    catch (Exception e)
                    {
                        response.DocumentType    = model.DocumentType;
                        response.IsSuccess       = false;
                        response.ResponseMessage = ClientMessageConstant.WeAreUnableToProcessYourRequest;
                    }
                    allResponse.Add(response);
                }

                await _appDbContext.SaveChangesAsync();

                return(new FileResponse(allResponse));
            }
            catch (Exception e)
            {
                return(new FileResponse(e));
            }
        }