private async Task RunAsync(CancellationToken cancellationToken) { // TODO: Remplacez le texte suivant par votre propre logique. while (!cancellationToken.IsCancellationRequested) { Trace.TraceInformation("Working"); TASK_Service taskService = new TASK_Service(); List <TASK> listOfTasks = taskService.GetListOfTaskByStatusToDoOrToMerge(); if (listOfTasks.Count() > 0) { TASK task = listOfTasks.First(); task.DATE_BEGIN_CONVERSION = DateTime.Now; taskService.AddOrUpdateTask(task); new TRACE_Service().AddTrace(new TRACE() { FK_ID_TASK = task.PK_ID_TASK, FK_ID_SERVER = 1, METHOD = "INITIALISATION TASK", DESCRIPTION = "Récupération de la tache à effectuer" }); TranscoderService.DoFFmpegConversion(task); } await Task.Delay(60000); } }
public static bool DoFFmpegConversion(TASK Task) { InitWorkspace(); FORMAT formatToConvert = new FORMAT_Service().GetFormatById((int)Task.FK_ID_FORMAT_TO_CONVERT); try { if (Task.STATUS == (int)EnumManager.PARAM_TASK_STATUS.A_REASSEMBLER) { Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EN_COURS; new TASK_Service().AddOrUpdateTask(Task); List <TASK> listOfSubTaskByParent = new TASK_Service().GetSubTaskByMotherTask(Task.PK_ID_TASK); bool isMerged = FFmpegMergeSplits(Task, listOfSubTaskByParent); if (isMerged) { Task.DATE_END_CONVERSION = DateTime.Now; Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EFFECTUE; } } else if (!GetTaskAndSetIfTaskIsSplitted(Task, formatToConvert)) { Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EN_COURS; new TASK_Service().AddOrUpdateTask(Task); FFMpegService.Execute(Task.FILE_URL_TEMP, formatToConvert.FORMAT_FFMPEG_VALUE, Task.FILE_URL_DESTINATION); Task.DATE_END_CONVERSION = DateTime.Now; Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EFFECTUE; // Verification si c'est une sous tache // On vérifie si les sous taches ont été effectué ou pas. if (Task.FK_ID_PARENT_TASK != null) { List <TASK> listOfSubTaskByParent = new TASK_Service().GetSubTaskByMotherTask((int)Task.FK_ID_PARENT_TASK); int totalEffectue = listOfSubTaskByParent.Count(x => x.STATUS == (int)EnumManager.PARAM_TASK_STATUS.EFFECTUE); if (totalEffectue.Equals(listOfSubTaskByParent.Count)) { TASK MotherTask = new TASK_Service().GetTaskById((int)Task.FK_ID_PARENT_TASK); MotherTask.STATUS = (int)EnumManager.PARAM_TASK_STATUS.A_REASSEMBLER; new TASK_Service().AddOrUpdateTask(MotherTask); } } } new TASK_Service().AddOrUpdateTask(Task); return(true); } catch (Exception e) { Task.DATE_END_CONVERSION = DateTime.Now; Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.ERREUR; new TASK_Service().AddOrUpdateTask(Task); TRACE Trace = new TRACE { FK_ID_TASK = Task.PK_ID_TASK, FK_ID_SERVER = 1, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName, DESCRIPTION = e.Message, METHOD = "CONVERSION FFMPEG", TYPE = "ERROR" }; new TRACE_Service().AddTrace(Trace); return(false); } }
public ActionResult Telecharger(int id) { TASK task = new TASK_Service().GetTaskById(id); int index = task.FILE_URL_DESTINATION.LastIndexOf('\\') + 1; string file = task.FILE_URL_DESTINATION.Substring(index); DownloadFile(file, task.FILE_URL_DESTINATION); return(RedirectToAction("MesConversions")); }
public ActionResult DeleteConversion(int id) { if (id != 0) { bool isDeleted = new TASK_Service().DeleteTaskById(id); if (isDeleted) { return(RedirectToAction("Panier")); } } return(RedirectToAction("Panier")); }
public ActionResult MesConversions() { int UserId = CookieUtil.GetUserId(this); if (UserId == 0) { return(RedirectToAction("Index", "Home")); } var commandes = new TASK_Service().GetListCommandesViewModel(UserId); return(View("ListCommandes", commandes)); }
public ActionResult Panier() { int UserId = CookieUtil.GetUserId(this); if (UserId == 0) { return(RedirectToAction("Index", "Home")); } var panier = new TASK_Service().GetPanierViewModel(UserId); return(View("Panier", panier)); }
public ActionResult AddConversion() { int UserId = CookieUtil.GetUserId(this); if (UserId == 0) { CreateTaskViewModel model = new TASK_Service().InitCreateTaskViewModelFromAnonymous(); return(View(model)); } { CreateTaskViewModel model = new TASK_Service().InitCreateTaskViewModel(UserId); return(View(model)); } }
private void WorkerFunction() { // start an endless loop; loop will abort only when "serviceStarted" flag = false while (true) { try { tick++; CreateFileData("Events.txt", "tick: " + tick.ToString() + " Date : " + DateTime.Now.ToString()); CreateFileData("Events.txt", "avant requete : ok"); TASK_Service taskService = new TASK_Service(); TASK task = taskService.GetLastTaskToConvert(); if (task != null) { CreateFileData("Events.txt", "tache trouvée : " + task.PK_ID_TASK.ToString()); lock (_lockObject) { CreateFileData("Events.txt", "tache not null et lock : ok"); task.DATE_BEGIN_CONVERSION = DateTime.Now; taskService.UpdateTask(task); new TRACE_Service().AddTrace(new TRACE() { FK_ID_TASK = task.PK_ID_TASK, FK_ID_SERVER = 1, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName, METHOD = "INITIALISATION TASK", DESCRIPTION = "Récupération de la tache à effectuer" }); TranscoderService.DoFFmpegConversion(task); } } } catch (Exception f) { string path = ConfigurationManager.AppSettings["TranscoderRootServiceForLogs"] + "Exception.txt"; StreamWriter oStreamWriter = new StreamWriter(path, true); oStreamWriter.WriteLine("DATE : " + DateTime.Now.ToString()); oStreamWriter.WriteLine(f.Message); oStreamWriter.WriteLine(f.InnerException); oStreamWriter.WriteLine(f.StackTrace); oStreamWriter.Close(); oStreamWriter = null; serviceStarted = false; } Thread.Sleep(5000); serviceStarted = true; } // time to end the thread // Thread.CurrentThread.Abort(); }
public ActionResult AddConversion(CreateTaskViewModel model) { //if (!ModelState.IsValid) // return View(model); bool isEdited = new TASK_Service().AddTaskByViewModel(model); FlashMessage.Confirmation(@UiStrings.add_conversion_message_added_to_cart); if (model.ShortEditUserViewModel.PK_ID_USER == 0) { return(LoginAuto(model.ShortEditUserViewModel)); } else { return(RedirectToAction("Index")); } }
public HomeAuthViewModel GetDataFromUserId(int userId) { var taskService = new TASK_Service(); var lastTask = taskService.GetLastTaskByUserId(userId); var vm = new HomeAuthViewModel(); if (lastTask != null) { var status = new PARAM_TASK_STATUS_Service().GetAll().Where(x => x.PK_ID_STATUS == lastTask.STATUS).FirstOrDefault(); string fileName = lastTask.FILE_URL.Substring(lastTask.FILE_URL.LastIndexOf(@"\") + 1); vm = new HomeAuthViewModel() { DateDemande = lastTask.TRANSACTION.DATE_TRANSACTION, LastTranscode = fileName, Status = status.LIBELLE }; } return(vm); }
public void StartDebug() { while (true) { try { CreateFileData("Events.txt", "avant requete : ok"); TASK_Service taskService = new TASK_Service(); TASK task = taskService.GetListOfTaskByStatusToDoOrToMerge().FirstOrDefault(); CreateFileData("Events.txt", "tache trouvée : " + task.PK_ID_TASK.ToString()); lock (_lockObject) { CreateFileData("Events.txt", "lock : ok"); if (task != null) { CreateFileData("Events.txt", "tache not null : ok"); task.DATE_BEGIN_CONVERSION = DateTime.Now; taskService.UpdateTask(task); new TRACE_Service().AddTrace(new TRACE() { FK_ID_TASK = task.PK_ID_TASK, FK_ID_SERVER = 1, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName, METHOD = "INITIALISATION TASK", DESCRIPTION = "Récupération de la tache à effectuer" }); TranscoderService.DoFFmpegConversion(task); } } } catch (Exception f) { string path = ConfigurationManager.AppSettings["TranscoderRootServiceForLogs"] + "Exception.txt"; StreamWriter oStreamWriter = new StreamWriter(path, true); oStreamWriter.WriteLine(f.Message); oStreamWriter.WriteLine(f.InnerException); oStreamWriter.WriteLine(f.StackTrace); oStreamWriter.Close(); oStreamWriter = null; } } }
//ConfigurationManager.AppSettings["TranscoderTempRootDestination"]; public static bool DoFFmpegConversion(TASK Task) { InitWorkspace(); // on récupère le format de conversion de la tache FORMAT formatToConvert = new FORMAT_Service().GetFormatById((int)Task.FK_ID_FORMAT_TO_CONVERT); FORMAT formatBase = new FORMAT_Service().GetFormatById((int)Task.FK_ID_FORMAT_BASE); var formatTypeBase = new FORMAT_TYPE_Service().findById((int)formatBase.FK_ID_FORMAT_TYPE); FORMAT_TYPE formatTypeDestination = new FORMAT_TYPE_Service().findById((int)Task.FORMAT.FK_ID_FORMAT_TYPE); // S'il s'agit d'une extraction audio if (formatTypeDestination != null && formatTypeBase.PK_ID_FORMAT_TYPE == (int)EnumManager.FORMAT_TYPE.VIDEO && formatTypeDestination.PK_ID_FORMAT_TYPE == (int)EnumManager.FORMAT_TYPE.AUDIO) { return(ExtractAudioSegment(Task)); } try { // On vérifie si la tache est à reassembler ou pas if (Task.STATUS == (int)EnumManager.PARAM_TASK_STATUS.A_REASSEMBLER) { // On met le statut en cours Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EN_COURS; new TASK_Service().UpdateTask(Task); // On liste les sous taches List <TASK> listOfSubTaskByParent = new TASK_Service().GetSubTaskByMotherTask(Task.PK_ID_TASK); // On va merge les sous taches pour renvoyer la conversion complete bool isMerged = FFmpegMergeSplits(Task, listOfSubTaskByParent); // si le merge s'est bien passé on change le statut de notre Tache. if (isMerged) { Task.DATE_END_CONVERSION = DateTime.Now; Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EFFECTUE; // On envoie la notification par mail MailUtil.SendMail(StringManager.CONVERSION_TERMINEE, Task); } } else // Dans le cas ou la tache n'a pas besoin d'etre splitté, on fait le traitement habituel. if (!GetTaskAndSetIfTaskIsSplitted(Task, formatToConvert)) { // On lance la conversion ConvertTask(Task, formatToConvert); // Verification si c'est une sous tache // On vérifie si les sous taches ont été effectuées ou pas. if (Task.FK_ID_PARENT_TASK != null) { List <TASK> listOfSubTaskByParent = new TASK_Service().GetSubTaskByMotherTask((int)Task.FK_ID_PARENT_TASK); int totalEffectue = listOfSubTaskByParent.Count(x => x.STATUS == (int)EnumManager.PARAM_TASK_STATUS.EFFECTUE); if (totalEffectue.Equals(listOfSubTaskByParent.Count)) { TASK MotherTask = new TASK_Service().GetTaskById((int)Task.FK_ID_PARENT_TASK); MotherTask.STATUS = (int)EnumManager.PARAM_TASK_STATUS.A_REASSEMBLER; new TASK_Service().UpdateTask(MotherTask); } } if (Task.STATUS == (int)EnumManager.PARAM_TASK_STATUS.EFFECTUE && Task.FK_ID_PARENT_TASK == null) { // On envoie la notification par mail MailUtil.SendMail(StringManager.CONVERSION_TERMINEE, Task); } } new TASK_Service().UpdateTask(Task); return(true); } catch (Exception e) { Task.DATE_END_CONVERSION = DateTime.Now; Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.ERREUR; new TASK_Service().UpdateTask(Task); TRACE Trace = new TRACE { FK_ID_TASK = Task.PK_ID_TASK, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName, FK_ID_SERVER = 1, DESCRIPTION = e.Message + " " + e.InnerException, METHOD = "CONVERSION FFMPEG", TYPE = "ERROR" }; new TRACE_Service().AddTrace(Trace); return(false); } }