public async Task <IActionResult> NewOperation(NewOperationFormViewModel model)
        {
            BlobsController storage       = new BlobsController(_hostingEnvironment);
            var             path          = _hostingEnvironment.WebRootPath;
            long            nextID        = _context.GetNextOperationID();
            string          containerName = "operation" + nextID;

            model.maxDuration = 0;
            model.date        = new DateTime(9000, 1, 1);
            if (model.videoFiles != null)
            {
                int i = 1;
                model.videos = new List <Video>();
                foreach (var VideoFile in model.videoFiles)
                {
                    if (VideoFile.Length > 0)
                    {
                        string[] type = VideoFile.ContentType.ToString().Split('/');
                        if (!type[0].Equals("video"))
                        {
                            continue;
                        }
                        string videoName = "video" + i + "." + type[1];
                        await storage.UploadBlob(containerName, videoName, VideoFile);

                        var            uploads   = Path.Combine(_hostingEnvironment.WebRootPath, "TempFiles");
                        var            filePath  = Path.Combine(uploads, videoName);
                        MediaUtilities mediaUtil = new MediaUtilities(_hostingEnvironment, videoName);
                        using (var fileStream = new FileStream(filePath, FileMode.Create))
                        {
                            await VideoFile.CopyToAsync(fileStream);
                        }
                        string fullVideoPath = storage.GetBlobFullPath(containerName, videoName);

                        model.videos.Add(new Video()
                        {
                            OperationID = nextID,
                            size_bytes  = mediaUtil.GetVideoSize(),
                            timeStamp   = mediaUtil.GetVideoEncodedDate(),
                            type        = type[1],
                            duration    = mediaUtil.GetVideoDuration().TotalMilliseconds,
                            fileName    = videoName,
                            fullPath    = fullVideoPath
                        });
                        mediaUtil.PrintVideoAvailableProperties();
                        Console.WriteLine("The size of the video in bytes is: " + mediaUtil.GetVideoSize());
                        Console.WriteLine("The encoded date is: " + mediaUtil.GetVideoEncodedDate());
                        Console.WriteLine("The first type of the video is: " + type[0]);
                        Console.WriteLine("The second type of the video is: " + type[1]);
                        Console.WriteLine("The duration of the video in seconds is: " + mediaUtil.GetVideoDuration().TotalSeconds);



                        if (mediaUtil.GetVideoDuration().TotalMilliseconds > model.maxDuration)
                        {
                            model.maxDuration = mediaUtil.GetVideoDuration().TotalMilliseconds;
                        }
                        if (model.date.CompareTo(mediaUtil.GetVideoEncodedDate()) > 0)
                        {
                            model.date = mediaUtil.GetVideoEncodedDate();
                        }
                        i++;
                    }
                }
            }



            if (model.audioFiles != null)
            {
                int i = 1;
                model.audios = new List <Audio>();
                foreach (var audioFile in model.audioFiles)
                {
                    if (audioFile.Length > 0)
                    {
                        string[] type = audioFile.ContentType.ToString().Split('/');
                        if (!type[0].Equals("audio"))
                        {
                            continue;
                        }
                        string audioName = "audio" + i + "." + type[1];
                        await storage.UploadBlob(containerName, audioName, audioFile);

                        var            uploads   = Path.Combine(_hostingEnvironment.WebRootPath, "TempFiles");
                        var            filePath  = Path.Combine(uploads, audioName);
                        MediaUtilities mediaUtil = new MediaUtilities(_hostingEnvironment, audioName);
                        using (var fileStream = new FileStream(filePath, FileMode.Create))
                        {
                            await audioFile.CopyToAsync(fileStream);
                        }


                        string fullAudioPath = storage.GetBlobFullPath(containerName, audioName);

                        model.audios.Add(new Audio()
                        {
                            OperationID = nextID,
                            size_bytes  = audioFile.Length,
                            timeStamp   = mediaUtil.GetAudioEarliestDate(audioFile.FileName),
                            type        = type[1],
                            duration    = mediaUtil.GetAudioDuration().TotalMilliseconds,
                            fileName    = audioName,
                            fullPath    = fullAudioPath
                        });
                        mediaUtil.PrintAudioAvailableProperties();
                        Console.WriteLine("The size of the audio file in bytes is:" + mediaUtil.GetAudioSize());
                        Console.WriteLine("The earliert date of the specific file is: " + mediaUtil.GetAudioEarliestDate(audioFile.FileName));
                        Console.WriteLine("the type0 of the audio file is " + type[0]);
                        Console.WriteLine("the type1 of the audio file is " + type[1]);
                        Console.WriteLine("the duration of the audio file in seconds is " + mediaUtil.GetAudioDuration().TotalSeconds);
                        Console.WriteLine("the duration of the audio file in minutes is " + mediaUtil.GetAudioDuration().TotalMinutes);
                        Console.WriteLine("the name of the audio file is " + audioName);



                        if (mediaUtil.GetAudioDuration().TotalMilliseconds > model.maxDuration)
                        {
                            model.maxDuration = mediaUtil.GetAudioDuration().TotalMilliseconds;
                        }
                        if (model.date.CompareTo(mediaUtil.GetAudioEarliestDate(audioFile.FileName)) > 0)
                        {
                            model.date = mediaUtil.GetAudioEarliestDate(audioFile.FileName);
                        }
                        i++;
                    }
                }
            }

            if (model.monitorFile != null)
            {
                if (model.monitorFile.Length > 0)
                {
                    model.patientsMonitoringFile = new PatientsMonitoringFile();
                    string[] name = model.monitorFile.FileName.Split('.');
                    Console.WriteLine("The f*****g name is ");
                    name.ToList().ForEach(Console.WriteLine);
                    string suffix = name[name.Length - 1];
                    string type   = model.monitorFile.ContentType.ToString();

                    string fileMonitorName = "patients-monitoring-file" + "." + suffix;
                    await storage.UploadBlob(containerName, fileMonitorName, model.monitorFile);

                    var            uploads   = Path.Combine(_hostingEnvironment.WebRootPath, "TempFiles");
                    var            filePath  = Path.Combine(uploads, fileMonitorName);
                    MediaUtilities mediaUtil = new MediaUtilities(_hostingEnvironment, fileMonitorName);
                    using (var fileStream = new FileStream(filePath, FileMode.Create))
                    {
                        await model.monitorFile.CopyToAsync(fileStream);
                    }


                    string fullFilePath = storage.GetBlobFullPath(containerName, fileMonitorName);


                    model.patientsMonitoringFile.OperationID = nextID;
                    model.patientsMonitoringFile.size_bytes  = model.monitorFile.Length;
                    model.patientsMonitoringFile.timeStamp   = mediaUtil.GetFileEarliestDate(model.monitorFile.FileName);
                    model.patientsMonitoringFile.type        = type;
                    model.patientsMonitoringFile.fileName    = fileMonitorName;
                    model.patientsMonitoringFile.fullPath    = fullFilePath;
                }
            }
            Console.WriteLine("the earliest recorded date is:" + model.date);

            MediaUtilities.CleanTempFolder(_hostingEnvironment);


            _context.InsertOperation(model);

            TempData["msg"] = "<script>alert('Operation uploaded successfully');</script>";

            return(RedirectToAction(nameof(Index)));
        }