/// <summary>
        /// This function downloads the file from a given location
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="deleteExisting"></param>
        /// <param name="saveToDb"></param>
        /// <returns></returns>
        private int DownloadAndSaveDocument(Document doc, bool deleteExisting = false, bool saveToDb = true)
        {
            try
            {
                using (var wc = new WebClient())
                {
                    // Get the document path and creating directory
                    var path = GetDocumentLocation(doc.DocumentTypeValue, doc.RefId, doc.SubRefId).Replace("/", "\\");
                    if (!Directory.Exists(path))
                        Directory.CreateDirectory(path);
                    doc.FileName = Path.GetFileName(doc.UploadUrl);
                    // for the cv change the filename to cv
                    if (doc.DocumentTypeValue == 4)
                    {
                        doc.FileName = "cv" + Path.GetExtension(doc.UploadUrl);
                    }

                    if (deleteExisting)
                    {
                        DeleteFilesForDocType(path, doc);
                        path = path + doc.FileName;
                    }
                    else
                    {
                        path = path + doc.FileName;
                        //check for same file
                        path = GetFileName(path);
                        doc.FileName = Path.GetFileName(path);
                    }
                    var f = HttpContext.Current.Server.MapPath(doc.UploadUrl);
                    // Download the Web resource and save it into the current filesystem folder.
                    if (doc.UploadUrl.StartsWith("http"))
                        wc.DownloadFile(doc.UploadUrl, path);
                    else if (File.Exists(HttpContext.Current.Server.MapPath(doc.UploadUrl)))
                        File.Copy(HttpContext.Current.Server.MapPath(doc.UploadUrl), path);
                    else
                        return 0;
                    // Save document

                    if (saveToDb)
                    {
                        return AddDocument(doc);
                    }

                }
            }
            catch (Exception e)
            {
                // ignored
            }
            return -1;
        }
 /// <summary>
 /// This function deletes the records from daatbase for specified doc type to handle duplications
 /// </summary>
 /// <param name="path"></param>
 /// <param name="doc"></param>
 private void DeleteFilesForDocType(string path, Document doc)
 {
     var context = new dbDataContext();
     try
     {
         List<tbl_Document> documents;
         //delete entries from db
         if (doc.SubRefId > -1)
         {
             documents = (from t in context.tbl_Documents where t.DocumentTypeValue == doc.DocumentTypeValue && t.RefId == doc.RefId && t.SubRefId == doc.SubRefId select t).ToList();
         }
         else
             documents = (from t in context.tbl_Documents where t.DocumentTypeValue == doc.DocumentTypeValue && t.RefId == doc.RefId select t).ToList();
         if (documents.Count > 0)
         {
             context.tbl_Documents.DeleteAllOnSubmit(documents);
             context.SubmitChanges();
         }
         //delete from actual location
         Array.ForEach(Directory.GetFiles(path), File.Delete);
     }
     catch (Exception)
     {
         //Ignore
     }
 }
 /// <summary>
 /// Add document into database
 /// </summary>
 /// <param name="doc"></param> 
 private int AddDocument(Document doc)
 {
     var context = new dbDataContext();
     var document = new tbl_Document
     {
         DocumentTypeValue = doc.DocumentTypeValue,
         FileName = doc.FileName,
         RefId = doc.RefId,
         DocumentPath = GetDocumentLocation(doc.DocumentTypeValue, doc.RefId, doc.SubRefId, true) + doc.FileName,
         CreatedDate = DateTime.Now,
         SubRefId = doc.SubRefId,
         DocGuid = Guid.NewGuid().ToString(),
         UploadedBy = doc.UploadedBy
     };
     context.tbl_Documents.InsertOnSubmit(document);
     context.SubmitChanges();
     return document.DocumentId;
 }
 /// <summary>
 /// This file create the file using posted file
 /// </summary>
 /// <param name="doc"></param>
 /// <param name="deleteExisting"></param>
 /// <param name="saveToDb"></param>
 /// <returns></returns>
 private int CreateFileFromFileUploader(Document doc, bool deleteExisting = false, bool saveToDb = true)
 {
     try
     {
         // Get the document path and creating directory
         var path = GetDocumentLocation(doc.DocumentTypeValue, doc.RefId, doc.SubRefId).Replace("/", "\\");
         // throw new Exception(path);
         if (!Directory.Exists(path))
             Directory.CreateDirectory(path);
         doc.FileName = Path.GetFileName(doc.PostedFile.FileName);
         // for the cv change the filename to cv
         if (doc.DocumentTypeValue == 4)
         {
             doc.FileName = "cv" + Path.GetExtension(doc.PostedFile.FileName);
         }
         if (deleteExisting)
         {
             DeleteFilesForDocType(path, doc);
             path = path + doc.FileName;
         }
         else
         {
             path = path + doc.FileName;
             //check for same file
             path = GetFileName(path);
             doc.FileName = Path.GetFileName(path);
         }
         //save the file inside the posted file
         doc.PostedFile.SaveAs(path);
         // Save document
         if (saveToDb)
         {
             return AddDocument(doc);
         }
     }
     catch (Exception)
     {
         // ignored
     }
     return 0;
 }