internal static string ToLink(Storage.Publication publication, Storage.CompilationRequest compilationRequest) { // Used only for public publications; for the private ones it's better to check Storage.StorageManager.PartialPublication ppublication = new Storage.StorageManager.PartialPublication(); ppublication.publicationID = publication.publicationID; ppublication.externalServiceID = (int)publication.externalServiceID; ppublication.isPublic = publication.isPublic; return(ToLink(ppublication, compilationRequest)); }
/// <summary> /// FORSE QUESTO METODO NON SERVE /// SERVE ECCOMEEEE!! /// </summary> /// <returns>una lista vuota</returns> public List <ComputableWorkflowReference> GetToBeCompiledWorkflows() { List <ComputableWorkflowReference> ret = new List <ComputableWorkflowReference>(); if (!_registered) { return(ret); } Storage.StorageManager db = new Storage.StorageManager(); Storage.User user = db.getEntityByID <Storage.User>(_userId); List <Storage.StorageManager.Pair <string, int> > tempcontacts = new List <Storage.StorageManager.Pair <string, int> >(); foreach (Storage.ExternalAccount extAcc in user.ExternalAccount) { Storage.StorageManager.Pair <string, int> pair = new Storage.StorageManager.Pair <string, int>(); pair.First = extAcc.username; pair.Second = extAcc.serviceID; tempcontacts.Add(pair); } List <Storage.Contact> mycontacts = db.getContactsByExtID(tempcontacts); foreach (Storage.Contact mycontact in mycontacts) { List <Storage.Publication> pubs = db.getListPublicationsByContactID(mycontact.contactID); foreach (Storage.Publication pub in pubs) { Storage.CompilationRequest req = db.getCompilationRequestByPulicationAndContact(mycontact.contactID, pub.publicationID); if (!req.compiled) { ret.Add(new ComputableWorkflowReference(_userId, pub.publicationID, pub.namePublication, pub.description, pub.themeID, req.compilReqID, !pub.isPublic, true, pub.expirationDate)); } } } return(ret); }
/// <summary> /// Get all public forms links with names and descriptions /// </summary> /// <returns>A Dictionary containing pairs of FormLink/<FormName,FormDescription&rt;</returns> public static Dictionary <string, Storage.StorageManager.Pair <string, string> > GetPublicFormsLinks() { int fakeId = 1; Storage.StorageManager sto = new Storage.StorageManager(); // We likes very long types List <Storage.StorageManager.Pair < Storage.StorageManager.PartialPublication, Storage.CompilationRequest > > completelypublicpubs = sto.getPublicationsCompilationRequestByContactID(fakeId); List <Storage.StorageManager.PartialPublication> publicpubs = sto.getPublicationsPublic(); Dictionary <string, Storage.StorageManager.Pair <string, string> > result = new Dictionary <string, Storage.StorageManager.Pair <string, string> >(); int i = 0; foreach (Storage.StorageManager.PartialPublication pub in publicpubs) { Storage.CompilationRequest creq = null; if (pub.publicationID == completelypublicpubs[i].First.publicationID) { // Completely public creq = completelypublicpubs[i].Second; i++; // If reached the last one, stay there if (i == completelypublicpubs.Count) { i--; } } Storage.StorageManager.Pair <string, string> pair = new Storage.StorageManager.Pair <string, string>(); pair.First = pub.namePublication; pair.Second = pub.descr; result.Add(ToLink(pub, creq), pair); Console.WriteLine(ToLink(pub, creq)); } return(result); }
public static ComputableWorkflowReference GetWorkflow(string wid, string crid, string username, string service, string token) { Storage.StorageManager sto = new Storage.StorageManager(); int pubid = -1; int creqid = -1; try { pubid = int.Parse(wid); creqid = int.Parse(crid); } catch (Exception) { // Storage-style exception catching :P return(null); } Storage.Publication pub = sto.getEntityByID <Storage.Publication>(pubid); if (pub == null) { return(null); } FormType ftype = GetWorkflowType(pub); switch (ftype) { case FormType.PUBLIC_WITH_REPLICATION: { Storage.CompilationRequest creq = sto.getEntityByID <Storage.CompilationRequest>(creqid); if (creq == null) { return(null); } // Public, check strings if (creq.publicationID == pub.publicationID && String.IsNullOrEmpty(username) && String.IsNullOrEmpty(service) && String.IsNullOrEmpty(token)) { // All ok, create and returns the wf return(new ComputableWorkflowReference(pub.userID, pub.publicationID, pub.namePublication, pub.description, pub.themeID, creqid, false, true, pub.expirationDate)); } else { // Public publication, but not null parameters, forged link return(null); } } case FormType.PUBLIC_WITHOUT_REPLICATION: { // Check with contact authentication int serviceID = -1; try { serviceID = int.Parse(service); } catch (Exception) { serviceID = -1; } if (serviceID == -1) { // Errore return(null); } Storage.Contact contact = sto.getContactByUserService(username, serviceID); if (contact == null) { // All right, we create it now contact = sto.addContact(username, serviceID, "Filler_Only_Contact"); if (contact == null) { // No way return(null); } } // Get the right CompilationRequest Storage.CompilationRequest creq = sto.getCompilationRequestByPulicationAndContact(contact.contactID, pub.publicationID); if (creq == null) { // The user has surely not compiled it before creq = sto.addContactToPublication(pub.publicationID, contact.contactID, "DUMMY_TOKEN"); if (creq == null) { // No way return(null); } } if (creq.compiled) { // Already Compiled return(null); } else { return(new ComputableWorkflowReference(pub.userID, pub.publicationID, pub.namePublication, pub.description, pub.themeID, creq.compilReqID, true, true, pub.expirationDate)); } } case FormType.PUBLIC_BY_SERVICE: { // Check with contact authentication int serviceID = -1; try { serviceID = int.Parse(service); } catch (Exception) { serviceID = -1; } if (serviceID == -1) { // Errore return(null); } if (pub.Service.serviceID != serviceID) { // This serviceID is not allowed to fill the publication return(null); } Storage.Contact contact = sto.getContactByUserService(username, serviceID); if (contact == null) { // All right, we create it now contact = sto.addContact(username, serviceID, "Filler_Only_Contact"); if (contact == null) { // No way return(null); } } // Get the right CompilationRequest Storage.CompilationRequest creq = sto.getCompilationRequestByPulicationAndContact(contact.contactID, pub.publicationID); if (creq == null) { // The user has surely not compiled it before creq = sto.addContactToPublication(pub.publicationID, contact.contactID, "DUMMY_TOKEN"); if (creq == null) { // No way return(null); } } if (creq.compiled) { // Already Compiled return(null); } else { return(new ComputableWorkflowReference(pub.userID, pub.publicationID, pub.namePublication, pub.description, pub.themeID, creq.compilReqID, true, true, pub.expirationDate)); } } case FormType.PRIVATE_NOT_ANONYM: case FormType.PRIVATE_ANONYM: { // Private, check strings if (creqid != -1) { // Check with token Storage.CompilationRequest creq = sto.getEntityByID <Storage.CompilationRequest>(creqid); if (creq == null) { return(null); } if (creq.publicationID == pub.publicationID && creq.token.Equals(token) && ((creq.Contact.nameContact).ToUpper()).Equals(username) && creq.Contact.Service.nameService.Equals(service) && !creq.compiled) { // Right compilation request, all done! return(new ComputableWorkflowReference(pub.userID, pub.publicationID, pub.namePublication, pub.description, pub.themeID, creqid, true, true, pub.expirationDate)); } else { // Wrong authentication parameters return(null); } } else { // Check with contact authentication int serviceID = -1; try { serviceID = int.Parse(service); } catch (Exception) { serviceID = -1; } if (serviceID == -1) { // Errore return(null); } Storage.Contact contact = sto.getContactByUserService(username, serviceID); if (contact == null) { // In this case, if the contact doesn't exists, is an error return(null); } // Get the right CompilationRequest Storage.CompilationRequest creq = sto.getCompilationRequestByPulicationAndContact(contact.contactID, pub.publicationID); if (creq == null) { // L'utente non ha il permesso per riempire la form return(null); } if (creq.compiled) { // L'utente ha giĆ inserito la form return(null); } else { return(new ComputableWorkflowReference(pub.userID, pub.publicationID, pub.namePublication, pub.description, pub.themeID, creq.compilReqID, true, true, pub.expirationDate)); } } } default: { return(null); } } }
internal static string ToLink(Storage.StorageManager.PartialPublication publication, Storage.CompilationRequest compilationRequest) { string webServerAddress = Storage.StorageManager.getEnvValue("webServerAddress"); string fillingPage = "/FormFillier/Filling.aspx"; string ret = null; if (publication.isPublic) { if (compilationRequest == null) { ret = "http://" + webServerAddress + fillingPage + "?WorkflowID=" + publication.publicationID + "&CompilationRequestID=" + "-1"; if (publication.externalServiceID == 1) { ret += "&Service=-1"; } else { ret += "&Service=" + publication.externalServiceID; } } else { ret = "http://" + webServerAddress + fillingPage + "?WorkflowID=" + publication.publicationID + "&CompilationRequestID=" + compilationRequest.compilReqID; } } return(ret); }
public WorkflowInformations GetWorkflow(int compilationRequestId, string username, string service, string token) { Storage.StorageManager manager = new Storage.StorageManager(); Storage.CompilationRequest compilationRequest = manager.getEntityByID <Storage.CompilationRequest>(compilationRequestId); WorkflowInformations infs = new WorkflowInformations(); infs.status = ResultStatus.OK; if (compilationRequest == null) { infs.status = ResultStatus.WRONG_COMPILATION_REQUEST_ID; return(infs); } Storage.Publication publication = compilationRequest.Publication; Security.ComputableWorkflowReference cw = Security.Token.GetWorkflow("" + publication.publicationID, "" + compilationRequestId, username, service, token); if (cw == null) { infs.status = ResultStatus.WRONG_COMPILATION_REQUEST_ID; return(infs); } infs.description = cw.GetWorkflow().GetEntireWorkflowDescription(); infs.publicationDescription = cw.GetWorkflowDescription(); infs.status = ResultStatus.OK; /* * if (publication.isPublic) * { * //pubblico * IComputableWorkflow cw = (IComputableWorkflow)manager.getWorkflowByPublication(publication); * cw.setWFname(publication.namePublication); * infs.description = cw.GetEntireWorkflowDescription(); * infs.publicationDescription = publication.description; * } * else * { * //privato * if (token==null || !compilationRequest.token.Equals(token)) * { * infs.status = ResultStatus.WRONG_TOKEN; * return infs; * } * Storage.Contact contact = compilationRequest.Contact; * if (username==null || service == null || * !(contact.externalUserID.Equals(username) && (contact.Service.nameService.Equals(service)))) * { * infs.status = ResultStatus.WRONG_USERNAME_OR_SERVICE; * return infs; * } * if (compilationRequest.compiled) * { * infs.status = ResultStatus.ALREADY_COMPILED; * } * IComputableWorkflow cw = (IComputableWorkflow)manager.getWorkflowByPublication(publication); * cw.setWFname(publication.namePublication); * infs.description = cw.GetEntireWorkflowDescription(); * infs.publicationDescription = publication.description; * } */ return(infs); }
public bool SendFilledDocument(int compilationRequestId, string username, string service, string token, string dataStr) { XmlDocument data = new XmlDocument(); data.LoadXml(dataStr); Storage.StorageManager manager = new Storage.StorageManager(); Storage.CompilationRequest compilationRequest = manager.getEntityByID <Storage.CompilationRequest>(compilationRequestId); if (compilationRequest == null) { return(false); } Storage.Publication publication = compilationRequest.Publication; IComputableWorkflow cw; if (publication.isPublic) { //pubblico cw = (IComputableWorkflow)manager.getWorkflowByPublication(publication); } else { //privato if (token == null || !compilationRequest.token.Equals(token)) { return(false); } Storage.Contact contact = compilationRequest.Contact; if (username == null || service == null || !(contact.externalUserID.Equals(username) && (contact.Service.nameService.Equals(service)))) { return(false); } if (compilationRequest.compiled) { return(false); } cw = (IComputableWorkflow)manager.getWorkflowByPublication(publication); } cw.setWFname(publication.namePublication); System.Xml.Schema.XmlSchemaSet schema = cw.GetCollectedDocumentSchemas(); data.Schemas = schema; try { data.Validate(null); } catch (XmlSchemaValidationException) { return(false); } Storage.Result res = null; System.Xml.Linq.XElement dataXElement = Storage.StorageManager.xmlDocumentToXElement(data); res = (Storage.Result)manager.addResult(compilationRequest.compilReqID, dataXElement); if (res == null) { return(false); } else { return(true); } }