// POST: api/PreviewFax
        public string Post([FromBody] Fax faxValues)
        {
            string documentList = faxValues.DocumentList;
            string faxTo = faxValues.FaxTo;
            string notes = faxValues.Notes;
            string cover = faxValues.Cover;
            string from = faxValues.From;
            string faxPath = string.Empty;

            SendFax sendFax = new SendFax();

            try
            {
                FaxingInformation faxingInformationInitial  = new Models.FaxingInformation();

                faxingInformationInitial.DocumentList = documentList;

                faxingInformationInitial.DocumentList = documentList;
                faxingInformationInitial.FaxTo = faxTo;
                faxingInformationInitial.Notes = notes;
                faxingInformationInitial.From = from;
                faxingInformationInitial.Cover = cover;
                faxingInformationInitial.CoverSheetOnly = faxValues.CoverOnly;

                FaxingInformation miscFaxInformation = sendFax.CreateFax(faxingInformationInitial);
                faxPath = ConfigurationValues.PdfFolder + miscFaxInformation.FaxName;
                System.IO.File.Copy(miscFaxInformation.FaxPath,
                    ConfigurationValues.WhereToCopyPDfTo + miscFaxInformation.FaxName, true);
                System.IO.File.Delete(miscFaxInformation.FaxPath);
                return faxPath;
            }
            catch (Exception er)
            {
                Logging.LogErrors(ConfigurationValues.ErrorLogPath, er.ToString());
                return faxPath;
            }
        }
        // POST: api/SendFax
        public IHttpActionResult Post([FromBody] Fax faxValues)
        {
            System.IO.Directory.CreateDirectory(ConfigurationValues.TemporaryFaxPath
                        + Utility.GetUserName());

            Logging.LogErrors(ConfigurationValues.ErrorLogPath, "Start Creating Fax");

            OperationResult createFaxRecordOperationResult = new Models.OperationResult();
            OperationResult sendFaxToMultiTechOperationResult = new Models.OperationResult();

            FaxRepository faxData = new FaxRepository();
            DocumentRepository documentData = new DocumentRepository();

            string[] faxesToSendList = faxValues.FaxTo.Split('~');

            SendFax sendFax = new SendFax();

            try
            {
                for (int i = 0; i < faxesToSendList.Length - 1; i++)
                {

                    Logging.LogErrors(ConfigurationValues.ErrorLogPath, "Getting fax information");

                    FaxingInformation faxingInformatonInitial = new FaxingInformation();

                    faxingInformatonInitial.DocumentList = faxValues.DocumentList;
                    faxingInformatonInitial.FaxTo = faxesToSendList[i];
                    faxingInformatonInitial.Notes = faxValues.Notes;
                    faxingInformatonInitial.From = faxValues.From;
                    faxingInformatonInitial.Cover = faxValues.Cover;
                    faxingInformatonInitial.CoverSheetOnly = faxValues.CoverOnly;

                    Logging.LogErrors(ConfigurationValues.ErrorLogPath, "Getting fax information");                    
                    //Create Fax
                    FaxingInformation faxingInformatonComplete = sendFax.CreateFax(faxingInformatonInitial);

                    System.IO.File.Copy(ConfigurationValues.TemporaryFaxPath
                        + Utility.GetUserName() + "\\" + faxingInformatonComplete.FaxName,
                        ConfigurationValues.PernamentFaxPath
                        + faxingInformatonComplete.FaxName, true);

                    createFaxRecordOperationResult = faxData.SendFax(faxingInformatonComplete, ConfigurationValues.PernamentFaxPath
                        + faxingInformatonComplete.FaxName, faxValues.From, faxValues.Notes);

                    if (createFaxRecordOperationResult.Success)
                    {
                        sendFaxToMultiTechOperationResult = sendFaxMultitech.SendTheFax(faxingInformatonComplete.Name, faxingInformatonComplete.FaxPath,
                            faxValues.From, faxingInformatonComplete.FaxNumber, createFaxRecordOperationResult.MessageList[0], ConfigurationValues.ApplicationPath);
                        if (sendFaxToMultiTechOperationResult.Success)
                        {
                            if (faxValues.SendToEmr == "F")
                            {
                                ArchiveDocument = new ArchiveDocument();

                                CurrentDocuments faxTodocument = documentData.GetCurrentDocumentPathPdf(Utility.GetUserName());
                                string[] filesToDelete = faxTodocument.CurrentDocumentList.Split('~');
                                for (int j = 0; j < filesToDelete.Length - 1; j++)
                                {
                                    try
                                    {
                                        string[] fileParts = filesToDelete[j].Split('\\');

                                        ArchiveDocument.ArchiveTheDocument(fileParts[fileParts.Length - 1], filesToDelete[j], Utility.GetUserName());

                                        File.Delete(filesToDelete[j]);
                                    }
                                    catch { }

                                    documentData.DeleteDocumentInFolder(filesToDelete[j]);
                                }


                                Logging.LogErrors(ConfigurationValues.ErrorLogPath, "Begin Delete file");

                                File.Delete(faxingInformatonComplete.FaxPath);

                                File.Delete(ConfigurationValues.TemporaryFaxPath
                                    + Utility.GetUserName()
                                    + "\\cover.pdf");
                                Logging.LogErrors(ConfigurationValues.ErrorLogPath, "end delete file");

                            }
                        }
                        else
                        {
                            faxData.UpdateFaxRecord(sendFaxToMultiTechOperationResult.MessageList[0]);
                            return BadRequest(sendFaxToMultiTechOperationResult.MessageList[0]);
                        }
                    }
                    else
                    {
                        return BadRequest(createFaxRecordOperationResult.MessageList[0]);
                    }
                }
            }
            catch (Exception er)
            {
                return BadRequest(er.ToString());
            }

            CurrentDocuments documentsToDelete = documentData.GetCurrentDocumentPathPdf(Utility.GetUserName());

            try
            {
                File.Delete(documentData.GetFullPathToDocument(Utility.GetUserName()));
            }
            catch { }

            string[] faxesToDelete = documentsToDelete.CurrentDocumentList.Split('~');

            try
            {
                for (int i = 0; i < faxesToDelete.Length - 1; i++)
                {
                    System.IO.File.Delete(ConfigurationValues.OutboundFaxDirectory + "\\"
                        + Utility.GetUserName() + "\\"
                        + faxesToDelete[i]);
                }
            }
            catch { }
            return Ok();
        }