public FeedPoster Save(FeedPoster feedPoster)
        {
            long id = this.Connection.Insert <FeedPoster>(feedPoster);

            feedPoster.Id = (int)id;
            return(feedPoster);
        }
コード例 #2
0
        async static Task Run(MainForm form)
        {
            try
            {
                Int32        idPartner  = form.GetSelectedPartner();
                List <Media> listMedias = new List <Media>();

                MediaRepository          mediaRepo      = new MediaRepository();
                FeedPosterLockRepository feedLockRepo   = new FeedPosterLockRepository();
                FeedPosterRepository     feedPosterRepo = new FeedPosterRepository();

                form.Log("Apagando os locks deste parceiro");
                feedLockRepo.RemoveAll(idPartner);

                foreach (String strId in form.txtList.Text.Split(','))
                {
                    Int32 id   = Int32.Parse(strId);
                    Media item = mediaRepo.Get(id);
                    listMedias.Add(item);
                }

                form.Log("Lista de Midias formada para subir as respectivas imagens...");
                form.progress.Minimum = 0;
                form.progress.Maximum = listMedias.Count;
                form.progress.Step    = 0;
                int step = 0;

                int requiredWidth  = 350;
                int requiredHeight = 530;

                foreach (Media media in listMedias)
                {
                    try
                    {
                        form.Log("Verificar se já existe uma imagem com as dimensoes e esta midia");
                        FeedPoster feedPoster = feedPosterRepo.GetByMediaId(media.Id, requiredWidth, requiredHeight);

                        if (feedPoster == null)
                        {
                            form.Log("A imagem NÃO existe, subindo...");

                            // path
                            String[] pathParts   = media.PosterURL.Split('/');
                            String   folderPath  = pathParts[pathParts.Length - 2];
                            String   filePath    = pathParts[pathParts.Length - 1];
                            String   extension   = filePath.Split('.')[1];
                            String   destinyPath = $"{folderPath}/{media.MediaId}_feed_{requiredWidth}_{requiredHeight}.{extension}";

                            form.Log($"Irá salvar em: {destinyPath}. ");

                            // resizing
                            Image originalImage = form._httpFilesHelper.GetImage(media.PosterURL);
                            Image imageResized  = form._imageManipulator.Resize(originalImage, requiredWidth, requiredHeight);
                            Image imageCropped  = form._imageManipulator.Crop(imageResized, requiredWidth, requiredHeight);

                            form.Log($"Imagem redimensionada. Subindo... ");

                            // Image to stream
                            var stream = new System.IO.MemoryStream();
                            imageCropped.Save(stream, ImageFormat.Jpeg);
                            // send to storage
                            String pathUpload = form._cloudHelper.sendToStorage(stream, $"{destinyPath}");

                            form.Log($"Strorage OK: {pathUpload} ");

                            feedPoster = feedPosterRepo.Save(new FeedPoster()
                            {
                                MediaId = media.Id,
                                Url     = pathUpload,
                                Height  = requiredHeight,
                                Width   = requiredWidth
                            }
                                                             );

                            form.Log($"Novo FeedPoster criado #{feedPoster.Id}");
                        }
                        else
                        {
                            form.Log("A imagem existe, apenas criar um lock para ela");
                            form.Log($"Imagem: #{feedPoster.Id}: {feedPoster.Url}");
                        }

                        form.Log("Criando um lock para este...");
                        FeedPosterLock feedPosterLock = feedLockRepo.Save(new FeedPosterLock()
                        {
                            IdFeedPoster        = feedPoster.Id,
                            IdFeedPosterPartner = idPartner
                        });
                        form.Log($"Lock criado #{feedPosterLock}...");
                        form.Log($"ok... {++step}/{form.progress.Maximum}");

                        form.progress.PerformStep();
                    }
                    catch (Exception ex)
                    {
                        form.Log($"* EXCPETION: {ex.Message}");
                    }
                }

                // excluding
                form.Log("Excluindo imagens sem lock");
                List <FeedPoster> listPostersUnlockeds = feedPosterRepo.GetAllUnlocked();
                foreach (FeedPoster feedPoster in listPostersUnlockeds)
                {
                    String[] pathParts  = feedPoster.Url.Split('/');
                    String   folderPath = pathParts[pathParts.Length - 2];
                    String   filePath   = pathParts[pathParts.Length - 1];
                    String   extension  = filePath.Split('.')[1];

                    String path = $"{folderPath}/{filePath}";
                    form._cloudHelper.Remove(path);
                    feedPosterRepo.Remove(feedPoster);
                    form.Log($"Poster excluido... #{feedPoster.Id} => {feedPoster.Url}");
                }

                form.Log("Todos os posters sem lock excluidos");
            }
            catch (Exception ex)
            {
                form.ErrorsTreatment(ex.Message);
            }
        }
 public bool Remove(FeedPoster feedPoster)
 {
     return(this.Connection.Delete <FeedPoster>(feedPoster));
 }