public DropBoxController(ICategoryRepositoryDB categoryRepository, IItemsRepositoryDB itemsRepository, IHostingEnvironment env)
        {
            this.categoryRepository = categoryRepository;
            this.itemsRepository    = itemsRepository;
            //auxCivm.Categories = categoryRepository.GetAll().ToList();
            auxCivm.Categories = categoryRepository.GetAll().ToList();
            auxCivm.Items      = itemsRepository.GetAll().ToList();
            var task = Task.Run((Func <Task>)DropBoxController.Run);

            civm.GroupTags = new List <String>();
            task.Wait();
            if (task.IsCompleted)
            {
                try{
                    foreach (DropBoxCategory c in auxCivm.Categories)
                    {
                        categoryRepository.Save(c);
                    }
                    foreach (DropBoxItems i in auxCivm.Items)
                    {
                        itemsRepository.Save(i);
                    }
                    foreach (DropBoxCategory c in auxCivmRemove.Categories)
                    {
                        categoryRepository.Delete(c);
                    }
                    foreach (DropBoxItems i in auxCivmRemove.Items)
                    {
                        itemsRepository.Delete(i);
                    }
                }catch (Exception e)
                {
                }
                civm.Categories = categoryRepository.GetAll().ToList();
                civm.Items      = itemsRepository.GetAll();
                ivm.Categories  = categoryRepository.GetAll().ToList();
                this.hostingEnv = env;
            }
        }
        public async Task <IActionResult> Post(ICollection <IFormFile> files, DropBoxItems item)
        {
            if (ModelState.IsValid)
            {
                var uploads = Path.Combine(hostingEnv.WebRootPath, "Files");
                foreach (var file in files)
                {
                    if (file.Length > 0)
                    {
                        using (var fileStream = new FileStream(Path.Combine(uploads, file.FileName), FileMode.Create))
                        {
                            await file.CopyToAsync(fileStream);
                        }
                        var path = Path.Combine(uploads, file.FileName);
                        using (var mem = new FileStream(path, FileMode.Open))
                        { bool cExist = false;
                          bool fExist = false;


                          String fName = file.FileName;
                          String aux   = fName.Substring(0, (fName.IndexOf('.')));
                          String form  = fName.Substring(fName.IndexOf('.'), (fName.Length - fName.IndexOf('.')));

                          item.Title  = aux;
                          item.Format = form;
                          item.date   = System.DateTime.UtcNow.ToString();
                          item.Path   = "/Uploads/" + file.FileName;
                          item.Link   = "https://www.dropbox.com/home/Uploads?preview=";
                          String lPath = "";
                          char[] lAux  = (item.Title + item.Format).ToCharArray();
                          foreach (var c in lAux)
                          {
                              if (c == ' ')
                              {
                                  lPath = lPath + "+";
                              }
                              else
                              {
                                  lPath = lPath + c;
                              }
                          }
                          item.Link = item.Link + lPath;

                          foreach (DropBoxCategory c in categoryRepository.GetAll())
                          {
                              if (c.CategoryType.Equals(form))
                              {
                                  cExist = true;
                                  break;
                              }
                          }
                          if (cExist == false)
                          {
                              DropBoxCategory category = new DropBoxCategory {
                                  CategoryType = form
                              };
                              categoryRepository.Save(category);
                          }
                          foreach (DropBoxItems i in itemsRepository.GetAll())
                          {
                              if (i.Title.Equals(item.Title))
                              {
                                  fExist = true;
                                  itemsRepository.Delete(i);
                                  itemsRepository.Save(item);
                                  await dropbox.Files.DeleteV2Async(i.Path);

                                  break;
                              }
                          }
                          if (fExist == false)
                          {
                              itemsRepository.Save(item);
                          }
                          await dropbox.Files.UploadAsync(
                              "/Uploads" + "/" + file.FileName,
                              WriteMode.Overwrite.Instance,
                              body : mem); }

                        System.IO.File.Delete(path);
                    }
                }

                return(RedirectToAction("Index"));
            }
            else
            {
                return(RedirectToAction("Upload"));
            }
        }