示例#1
0
        public async Task <IHttpActionResult> CreateCopyFileAsync(int id, FileUnitDto file)
        {
            await _service.CreateCopyAsync(id, file);

            //if (id != file.Id)
            //    return BadRequest();

            return(Ok());
        }
示例#2
0
        public async Task <IHttpActionResult> CreateFileAsync(FileUnitDto file)
        {
            var dto = await _service?.CreateAsync(file);

            if (dto == null)
            {
                return(BadRequest());
            }
            return(Ok(dto));
        }
示例#3
0
        public async Task <IHttpActionResult> UpdateFileAsync(int id, FileUnitDto file)
        {
            var dto = await _service?.UpdateAsync(id, file);

            if (id != file.Id)
            {
                return(BadRequest());
            }

            return(Ok(dto));
        }
示例#4
0
        public async Task <FileUnitDto> CreateAsync(FileUnitDto dto)
        {
            var user = await _usersService.GetCurrentUser();

            var localUser = await _unitOfWork?.Users?.Query.FirstOrDefaultAsync(x => x.GlobalId == user.id);

            var space = await _unitOfWork?.Spaces?.GetByIdAsync(dto.SpaceId);

            var parentFolder = await _unitOfWork?.Folders.GetByIdAsync(dto.ParentId);

            List <User> ReadPermittedUsers = new List <User>();

            ReadPermittedUsers.Add(localUser);

            List <User> ModifyPermittedUsers = new List <User>();

            ModifyPermittedUsers.Add(localUser);


            if (space != null)
            {
                var file = new FileUnit()
                {
                    Name                 = dto.Name,
                    FileType             = dto.FileType,
                    Link                 = dto.Link,
                    Description          = dto.Description,
                    CreatedAt            = DateTime.Now,
                    LastModified         = DateTime.Now,
                    IsDeleted            = false,
                    Space                = space,
                    FolderUnit           = parentFolder,
                    Owner                = await _unitOfWork?.Users?.Query.FirstOrDefaultAsync(u => u.GlobalId == user.id),
                    ReadPermittedUsers   = ReadPermittedUsers,
                    ModifyPermittedUsers = ModifyPermittedUsers
                };


                _unitOfWork?.Files?.Create(file);
                await _unitOfWork?.SaveChangesAsync();

                dto.Id           = file.Id;
                dto.CreatedAt    = file.CreatedAt;
                dto.LastModified = file.LastModified;
                dto.Author       = new AuthorDto()
                {
                    Id = file.Owner.Id, Name = user.name + ' ' + user.surname
                };
                dto.FileType = file.FileType;

                return(dto);
            }
            return(null);
        }
示例#5
0
        public async Task <FileUnitDto> UpdateDeletedAsync(int id, int?oldParentId, FileUnitDto dto)
        {
            var file = await _unitOfWork?.Files?.GetByIdDeletedAsync(id);

            if (file == null)
            {
                return(null);
            }

            file.Name         = dto.Name;
            file.FileType     = dto.FileType;
            file.Description  = dto.Description;
            file.IsDeleted    = dto.IsDeleted;
            file.LastModified = DateTime.Now;
            file.Link         = dto.Link;

            var space = await _unitOfWork.Spaces.GetByIdAsync(dto.SpaceId);

            if (oldParentId != null)
            {
                var oldParentFolder =
                    await
                    _unitOfWork.Folders.Query.Include(f => f.DataUnits)
                    .SingleOrDefaultAsync(f => f.Id == oldParentId);

                var list = new List <DataUnit>();
                foreach (var item in oldParentFolder.DataUnits)
                {
                    if (item.Id != file.Id)
                    {
                        list.Add(item);
                    }
                }

                oldParentFolder.DataUnits = list;
            }

            var parentFolder = await _unitOfWork.Folders.GetByIdAsync(dto.ParentId);

            file.Space      = space;
            file.FolderUnit = parentFolder ?? null;

            await _unitOfWork?.SaveChangesAsync();

            return(dto);
        }
示例#6
0
        public async Task <FileUnitDto> UpdateAsync(int id, FileUnitDto dto)
        {
            var file = await _unitOfWork?.Files?.GetByIdAsync(id);

            if (file == null)
            {
                return(null);
            }

            file.Name         = dto.Name;
            file.FileType     = dto.FileType;
            file.Description  = dto.Description;
            file.IsDeleted    = dto.IsDeleted;
            file.LastModified = DateTime.Now;
            file.Link         = dto.Link;
            if (dto.ParentId != 0)
            {
                file.FolderUnit = await _unitOfWork.Folders.GetByIdAsync(dto.ParentId);
            }
            await _unitOfWork?.SaveChangesAsync();

            return(dto);
        }
示例#7
0
        public async Task <IHttpActionResult> UpdateDeletedFileAsync(int id, int?oldParentId, FileUnitDto file)
        {
            var dto = await _service.UpdateDeletedAsync(id, oldParentId, file);

            if (id != file.Id)
            {
                return(BadRequest());
            }

            return(Ok(dto));
        }
示例#8
0
        public async Task CreateCopyAsync(int id, FileUnitDto dto)
        {
            var file = await _unitOfWork?.Files.Query
                       .Include(f => f.ModifyPermittedUsers)
                       .Include(f => f.ReadPermittedUsers)
                       .Include(f => f.MorifyPermittedRoles)
                       .Include(f => f.ReadPermittedRoles)
                       .SingleOrDefaultAsync(f => f.Id == id);;

            if (file == null)
            {
                return;
            }

            var space = await _unitOfWork.Spaces.GetByIdAsync(dto.SpaceId);

            var user = await _usersService?.GetCurrentUser();

            Regex regEx = new Regex(@"(.+?)(\.[^.]*$|$)");

            string name      = regEx.Match(file.Name)?.Groups[1].Value;
            string extention = regEx.Match(file.Name)?.Groups[2].Value;

            var copies = await _unitOfWork.Files.Query.Where(f => f.Name.StartsWith(name + "-copy") &&
                                                             (f.FolderUnit.Id == dto.ParentId || (dto.ParentId == 0 && f.Space.Id == dto.SpaceId))).ToListAsync();

            if (copies.Count > 0)
            {
                int index    = 0;
                int maxIndex = 1;
                foreach (var copyStr in copies.Select(c => c.Name.Substring(name.Length)))
                {
                    if (Int32.TryParse(copyStr, out index))
                    {
                        if (index > maxIndex)
                        {
                            maxIndex = index;
                        }
                    }
                }
                name = name + (maxIndex + 1).ToString();
            }
            else
            {
                name = name + "-copy";
            }

            var copy = new FileUnit
            {
                Name                 = name + extention,
                Description          = file.Description,
                FileType             = file.FileType,
                IsDeleted            = file.IsDeleted,
                LastModified         = DateTime.Now,
                CreatedAt            = DateTime.Now,
                Link                 = file.Link,
                Space                = space,
                Owner                = await _unitOfWork.Users.Query.FirstOrDefaultAsync(u => u.GlobalId == user.id),
                ModifyPermittedUsers = file.ModifyPermittedUsers,
                ReadPermittedUsers   = file.ReadPermittedUsers,
                MorifyPermittedRoles = file.MorifyPermittedRoles,
                ReadPermittedRoles   = file.ReadPermittedRoles
            };

            if (dto.ParentId != 0)
            {
                var parent = await _unitOfWork.Folders.GetByIdAsync(dto.ParentId);

                copy.FolderUnit = parent;
            }
            if (file.FileType == FileType.AcademyPro)
            {
                var course = await _unitOfWork.AcademyProCourses.Query
                             .Include(a => a.Author)
                             .Include(a => a.Tags)
                             .Include(a => a.Lectures.Select(l => l.CodeSamples))
                             .Include(a => a.Lectures.Select(l => l.ContentList))
                             .Include(a => a.Lectures.Select(l => l.HomeTasks))
                             .Include(a => a.Lectures.Select(l => l.Author))
                             .FirstOrDefaultAsync(a => a.FileUnit.Id == file.Id);

                var coursecopy = new AcademyProCourse
                {
                    StartDate = course.StartDate,
                    IsDeleted = false,
                    Tags      = new List <Tag>(),
                    FileUnit  = copy,
                    Author    = course.Author,
                    Lectures  = new List <Lecture>()
                };

                course.Tags?.ToList().ForEach(tag =>
                {
                    coursecopy.Tags.Add(_unitOfWork.Tags.Query.FirstOrDefault(x => x.Name == tag.Name) ?? new Tag {
                        Name = tag.Name, IsDeleted = false
                    });
                });

                course.Lectures?.ToList().ForEach(lecture =>
                {
                    coursecopy.Lectures.Add(new Lecture
                    {
                        Author      = lecture.Author,
                        Name        = lecture.Name,
                        Description = lecture.Description,
                        IsDeleted   = lecture.IsDeleted,
                        CreatedAt   = DateTime.Now,
                        StartDate   = lecture.StartDate,
                        ModifiedAt  = DateTime.Now,
                        CodeSamples = lecture.CodeSamples.Select(cs => new CodeSample
                        {
                            Code      = cs.Code,
                            IsDeleted = cs.IsDeleted,
                            Name      = cs.Name
                        }).ToList(),
                        ContentList = lecture.ContentList.Select(cl => new ContentLink
                        {
                            Name        = cl.Name,
                            IsDeleted   = cl.IsDeleted,
                            Description = cl.Description,
                            LinkType    = cl.LinkType,
                            Link        = cl.Link
                        }).ToList(),
                        HomeTasks = lecture.HomeTasks.Select(ht => new HomeTask
                        {
                            Description  = ht.Description,
                            IsDeleted    = ht.IsDeleted,
                            DeadlineDate = ht.DeadlineDate
                        }).ToList()
                    });
                });

                _unitOfWork.AcademyProCourses.Create(coursecopy);
            }

            if (file.FileType == FileType.Events)
            {
                var originalEvent = await _unitOfWork.Events.Query
                                    .Include(e => e.ContentList)
                                    .FirstOrDefaultAsync(e => e.FileUnit.Id == file.Id);

                Event eventCopy = new Event
                {
                    IsDeleted   = originalEvent.IsDeleted,
                    EventDate   = originalEvent.EventDate,
                    EventType   = originalEvent.EventType,
                    FileUnit    = copy,
                    ContentList = new List <EventContent>()
                };

                originalEvent.ContentList.ToList().ForEach(c =>
                                                           eventCopy.ContentList.Add(new EventContent
                {
                    Name         = c.Name,
                    Description  = c.Description,
                    IsDeleted    = c.IsDeleted,
                    ContentType  = c.ContentType,
                    Order        = c.Order,
                    CreatedAt    = DateTime.Now,
                    LastModified = DateTime.Now,
                    Content      = c.Content
                })
                                                           );
                _unitOfWork.Events.Create(eventCopy);
            }

            _unitOfWork.Files.Create(copy);

            await _unitOfWork?.SaveChangesAsync();
        }