<%@language = "javascript" %>
<% /*
     $Revision$
     $Id$

     File:          queuemail_save.asp
     Description:   Het echte bewaren van een opdracht notitie, zonder interactie
     Parameters:    opdr_key   opdrachtnummer
                    note_key   notitie key
                    urole
     Context:       A Vanuit mld_edit_note.asp
                    B Vanuit PDA/notitie.asp
*/
var JSON_Result = true;

%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../Shared/save2db.inc" -->
<!-- #include file="../Shared/FlexFiles.inc" -->

<%
var pkey = getQParamInt("key", -1);
var pcode = getQParam("pcode", "");
var pmodule = getQParam("pmodule", "");
var pniveau = getQParam("pniveau", "");

var orgsubject = getFParam("orgsubject", "");
var subject = getFParam("subject", "");
var mailfrom = getFParam("namens", "");
var emails = getFParam("emails", "");
var xkey = getFParamInt("xkey", -1);
var maillist = "\n" + emails.replace(/\;/g, "\n");


function tracksentemail(key, srttracking, emails, mailfrom, subject, prs_perslid_key, xkey, att_list)
{
  // This function is our gate to the mail (and probably other media) queue for ad hoc sending needs by the user
  // To be invoked e.g. when a user wants to e-mail a reservation form ("bon") to requestor or other address
  function queuemail(pcode, pref, pmessage, pemail, pmailfrom, xkey)
  {
    // pcode hoort te zijn een van BESMAI, BES2MA, BEZMAI, MLDMAI, ORDMAI, RESMAI, RES2MA
    // en is noodzakelijk om in de queue nog het type te kunnen bepalen.
    // PutOrders moet er nl. een bon van kunnen maken. De status/mode aldaar is dummy.
    // En: De laatste parameter is voor RESMAI/alleen een deelreservering.
    if (pemail == null) return false;

    if (pmailfrom == "")
    { // Geen namens mail adres meegekregen. Dan mailadres van user invullen
      // notify approver and requestor by message & mail as configured in fac_srtnotificatie with BESAPx
      pmailfrom = user.prs_perslid_email();
    }

    var attachments = att_list.join("|"); // lijst met attachments als string naar putnotificationsrtprio.

    Oracle.Execute("BEGIN fac.putnotificationsrtprio("
                                                  + user_key
                                                  + ", NULL " // pto
                                                  + ", " + safe.quoted_sql(pcode)
                                                  + ", " + pref
                                                  + ", " + safe.quoted_sql(pmessage)
                                                  + ", 2" // pstatus
                                                  + ", " + safe.quoted_sql(pemail)
                                                  + ", NULL" // pmobile
                                                  + ", " + xkey
                                                  + ", 2"
                                                  + ", " + safe.quoted_sql(pmailfrom)
                                                  + ", " + safe.quoted_sql(attachments)
                                                  + "); END;");
    putorders.sendnotifications(pref, pcode);

    return true;
  }

  // emails splitten
  var emailArr = ('' + emails).split(';');
  for (i = 0; i < emailArr.length; i++)
  {
    queuemail (srttracking, key, subject, emailArr[i], mailfrom, xkey);
  }

  // srttracking hoort te zijn een van BESMAI, BES2MA, BEZMAI, MLDMAI, ORDMAI, RESMAI, RES2MA
  if (typeof prs_perslid_key == 'undefined')
    prs_perslid_key = user_key;

  var mail_str = "";
  // PF: ik vind specifieke tekst niet nodig. Dit is nu dus gewoon documentatie ;-)
  switch (srttracking)
  {
    case "MLDMAI" :
    case "ORDMAI" :
    case "BESMAI" :
    case "BES2MA" :
    case "BEZMAI" :
    case "CNTMAI" :
    case "FINMAI" :
    case "INSMAI" :
    case "MESMAI" :
    case "PRJMAI" :
    case "PRSMAI" :
    case "RAPMAI" :
    case "RESMAI" : mail_str = L("lcl_hasbeenmailed_to") + emails;
                    break;
  }
  if (subject != orgsubject)
    mail_str += "\n" + L("lcl_noti_sendsubject") + " " + subject;

  // Voor RESMAI moet res_rsv_ruimte_key meegegeven worden van de deelreservering.
  // Tracken van het mailen van een gehele reservering heeft geen zin.
  if (srttracking != "RES2MA")
    shared.trackaction(srttracking, (srttracking == "RESMAI"? xkey : key), mail_str);
}; //tracksentemail()


function bestandenlijst(pmodule, pniveau, pkey)
{
    var bestandlijst = [];
    if (pmodule && pniveau)
    {
        var vSubfolder = pmodule + "/" + subfolderKey(pniveau, pkey);
        var vAttachPath = S("flexFilesPath")+ "/" + vSubfolder;

        var fso = new ActiveXObject("Scripting.FileSystemObject");
        if (fso.FolderExists(vAttachPath))
        {
            var f1 = fso.GetFolder(vAttachPath);
            var vmap = new Enumerator(f1.subFolders);
            for (; !vmap.atEnd(); vmap.moveNext())
            {
                var f2 = fso.GetFolder(vAttachPath + "/" + vmap.item().Name);
                var vfile = new Enumerator(f2.files);
                for (; !vfile.atEnd(); vfile.moveNext())
                {
                    bestandlijst.push( { folder: vSubfolder,
                                         file: { kenmerkkey: vmap.item().Name,
                                                 bestandnaam: vfile.item().Name
                                               }
                                       }
                                     );
                }
            }
        }
    }
    return bestandlijst;
}

// Bij MLD worden ook de bestanden van de 'parents' aangeboden
function bestandenlijstALL(pmodule, pniveau, pkey)
{
    var bestandlijst = bestandenlijst(pmodule, pniveau, pkey);
    if (pmodule == "MLD")
    {
        var sk = pkey;
        var mk = pkey;
        while (true)
        {
            var sql = "SELECT mld_melding_start_key"
                    + "  FROM mld_melding"
                    + " WHERE mld_melding_key = " + mk;
            var oRs = Oracle.Execute(sql);
            var sk = oRs("mld_melding_start_key").Value;
            if (!sk || sk == mk)
                break; // klaar
            bestandlijst = bestandlijst.concat(bestandenlijst(pmodule, pniveau, sk));
            mk = sk;
        }
    }
    return bestandlijst
}


// Welke bestanden zijn geselecteerd.
var checklist = bestandenlijstALL(pmodule, pniveau, pkey);
var file_list = [];
if (checklist.length > 0)
{
    for (att = 0; att < checklist.length; att++)
    {
        if (getFParam("kmnr" + att, "off") == "on")
        {
            file_list.push( checklist[att].folder + "/" + checklist[att].file.kenmerkkey + "/" + checklist[att].file.bestandnaam );
        }
    }
}

// track het senden van de mail
tracksentemail(pkey, pcode, emails, mailfrom, subject, user_key, (xkey > 0? xkey : null), file_list);

var result = {success: true};

Response.Write(JSON.stringify(result));
Response.End;
%>