Example #1
0
        public String setVerificationStatus(String entryId, int verificationStatusId, int addressTypeId, String customerName, String customerAddress, String comment, String apiKey, String apiTimeStamp, String apiSig)
        {
            DateTime lvsut;
            bool Error = false;
            StringBuilder resultBuilder = new StringBuilder();
            if(apiKey != "apikey")
            {
              Response.StatusCode = 404; //Nie bawię się w 401 itd, jak jest w specyfikacji, bo to i tak nie jest rozróżniane w LeaderMatch a tylko komplikuje sprawę
              Error = true;
              resultBuilder = new StringBuilder(String.Format("<?xml version=\"1.0\" encoding=\"UTF-8\"?><error code=\"API_KEY_INVALID\" message=\"Api key {0} does not exists.\" requestMethod=\"{1}\" requestTime=\"{2}\" requestURL=\"{3}\" xmlns=\"http://leader.raiffeisen.pl/api\" />",
            apiKey, Request.HttpMethod.ToString(), DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fff+01:00"), Request.Url.ToString().Replace("&", ";")));
            }
            using(LeaderDataClassesDataContext dc = new LeaderDataClassesDataContext())
            {
              var updatedEntry = (from entry in dc.t_leader_entries
                      where entry.entryId.ToString().Equals(entryId)
                      select entry).FirstOrDefault();
              if(updatedEntry == null)
              {
            Response.StatusCode = 404; //Nie bawię się w 401 itd, jak jest w specyfikacji, bo to i tak nie jest rozróżniane w LeaderMatch a tylko komplikuje sprawę
            Error = true;
            resultBuilder = new StringBuilder(String.Format("<?xml version=\"1.0\" encoding=\"UTF-8\"?><error code=\"ENTRY_NOT_FOUND\" message=\"Entry {0} does not exists or is not a transfer validated entry.\" requestMethod=\"{1}\" requestTime=\"{2}\" requestURL=\"{3}\" xmlns=\"http://leader.raiffeisen.pl/api\" />",
              entryId, Request.HttpMethod.ToString(), DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fff+01:00"), Request.Url.ToString().Replace("&", ";")));
              }
              if(!Error && updatedEntry.status == 1000)
              {
            Response.StatusCode = 404; //Nie bawię się w 401 itd, jak jest w specyfikacji, bo to i tak nie jest rozróżniane w LeaderMatch a tylko komplikuje sprawę
            Error = true;
            resultBuilder = new StringBuilder(String.Format("<?xml version=\"1.0\" encoding=\"UTF-8\"?><error code=\"ENTRY_STATUS_ENDING\" message=\"Entry {0} is in ending status.\" requestMethod=\"{1}\" requestTime=\"{2}\" requestURL=\"{3}\" xmlns=\"http://leader.raiffeisen.pl/api\" />",
              entryId, Request.HttpMethod.ToString(), DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fff+01:00"), Request.Url.ToString().Replace("&", ";")));
              }
              if(!Error && !(verificationStatusId == 1 || verificationStatusId == 2 || verificationStatusId == 3))
              {
            Response.StatusCode = 404; //Nie bawię się w 401 itd, jak jest w specyfikacji, bo to i tak nie jest rozróżniane w LeaderMatch a tylko komplikuje sprawę
            Error = true;
            resultBuilder = new StringBuilder(String.Format("<?xml version=\"1.0\" encoding=\"UTF-8\"?><error code=\"VERIFICATION_STATUS_NOT_FOUND\" message=\"Verification status {0} is incorrect.\" requestMethod=\"{1}\" requestTime=\"{2}\" requestURL=\"{3}\" xmlns=\"http://leader.raiffeisen.pl/api\" />",
              verificationStatusId, Request.HttpMethod.ToString(), DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fff+01:00"), Request.Url.ToString().Replace("&", ";")));
              }
              if(!Error && !(addressTypeId == 1 || addressTypeId == 2))
              {
            Response.StatusCode = 404; //Nie bawię się w 401 itd, jak jest w specyfikacji, bo to i tak nie jest rozróżniane w LeaderMatch a tylko komplikuje sprawę
            Error = true;
            resultBuilder = new StringBuilder(String.Format("<?xml version=\"1.0\" encoding=\"UTF-8\"?><error code=\"ADDRESS_TYPE_NOT_FOUND\" message=\"Address type {0} is incorrect.\" requestMethod=\"{1}\" requestTime=\"{2}\" requestURL=\"{3}\" xmlns=\"http://leader.raiffeisen.pl/api\" />",
              verificationStatusId, Request.HttpMethod.ToString(), DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fff+01:00"), Request.Url.ToString().Replace("&", ";")));
              }
              if(!Error)
              {
            int newStatus = verificationStatusId;
            int oldStatus = updatedEntry.status;
            if(!(oldStatus == 0 && (newStatus == 1 || newStatus == 2 || newStatus == 3)))
            {
              Response.StatusCode = 404; //Nie bawię się w 401 itd, jak jest w specyfikacji, bo to i tak nie jest rozróżniane w LeaderMatch a tylko komplikuje sprawę
              Error = true;
              resultBuilder = new StringBuilder(String.Format("<?xml version=\"1.0\" encoding=\"UTF-8\"?><error code=\"VERIFICATION_WORKFLOW_VIOLATION\" message=\"Verification status change for entry {0} from status {1} to status {2} violates the workflow.\" requestMethod=\"{3}\" requestTime=\"{4}\" requestURL=\"{5}\" xmlns=\"http://leader.raiffeisen.pl/api\" />",
                entryId, oldStatus, newStatus, Request.HttpMethod.ToString(), DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fff+01:00"), Request.Url.ToString().Replace("&", ";")));
            }
              }
              if(!Error)
              {
            updatedEntry.status = verificationStatusId;
            updatedEntry.comment = comment;
            updatedEntry.customerName = customerName;
            updatedEntry.customerAddress = customerAddress;
            updatedEntry.addressTypeId = addressTypeId;
            dc.SubmitChanges();
            XDocument xdoc = new XDocument(
             new XDeclaration("1.0", "utf-8", null),
               new XElement("setVerificationStatus",
                 new XAttribute("time", DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fff+01:00")),
                 new XAttribute("fake", "fakeValue")));
            resultBuilder = new StringBuilder(xdoc.ToString());
            resultBuilder.Replace("fake", "xmlns").Replace("xmlnsValue", "http://leader.raiffeisen.pl/api");
              }
            }

            return resultBuilder.ToString();
        }