internal FixedList <SignEvent> Execute(SignTask task)
        {
            Assertion.AssertObject(task, "task");

            this.EnsureValidCredentials(task.SignCredentials);

            var eventsList = new List <SignEvent>(task.SignRequests.Count);

            using (var context = StorageContext.Open()) {
                foreach (var request in task.SignRequests)
                {
                    SignEvent signEvent = CreateSignEvent(task, request);

                    context.Watch(request);

                    signEvent.Save();
                    request.Save();

                    eventsList.Add(signEvent);
                }

                context.Update();
            } // using

            return(eventsList.ToFixedList());
        }
 private void UpdateStatus(SignEvent signEvent)
 {
     if (signEvent.EventType == SignEventType.Signed)
     {
         this.SignStatus  = SignStatus.Signed;
         this.DigitalSign = signEvent.DigitalSign;
         this.SignTime    = signEvent.Timestamp;
     }
     else if (signEvent.EventType == SignEventType.Revoked)
     {
         this.SignStatus  = SignStatus.Revoked;
         this.DigitalSign = String.Empty;
         this.SignTime    = ExecutionServer.DateMaxValue;
     }
     else if (signEvent.EventType == SignEventType.Refused)
     {
         this.SignStatus  = SignStatus.Refused;
         this.DigitalSign = String.Empty;
         this.SignTime    = signEvent.Timestamp;
     }
     else if (signEvent.EventType == SignEventType.Unrefused)
     {
         this.SignStatus  = SignStatus.Pending;
         this.DigitalSign = String.Empty;
         this.SignTime    = signEvent.Timestamp;
     }
 }
        static internal void AppendSignEvent(SignEvent o)
        {
            var op = DataOperation.Parse("apdEOPSignEvent", o.Id, o.UID,
                                         o.SignRequest.Id, (char)o.EventType,
                                         o.DigitalSign, o.Timestamp,
                                         o.Integrity.GetUpdatedHashCode());

            DataWriter.Execute(op);
        }
Exemple #4
0
 static internal SignEventDTO Map(SignEvent signEvent)
 {
     return(new SignEventDTO {
         uid = signEvent.UID,
         eventType = signEvent.EventType.ToString(),
         timeStamp = signEvent.Timestamp,
         signRequest = Map(signEvent.SignRequest)
     });
 }
        internal SignEvent Unrefuse()
        {
            Assertion.Assert(this.SignStatus == SignStatus.Refused,
                             "Unrefuse is allowed only to requests with refused status.");

            var signEvent = new SignEvent(SignEventType.Unrefused, this);

            this.UpdateStatus(signEvent);

            return(signEvent);
        }
        internal SignEvent Revoke()
        {
            Assertion.Assert(this.SignStatus == SignStatus.Signed,
                             "Revoke is allowed only to requests with signed status.");

            var signEvent = new SignEvent(SignEventType.Revoked, this);

            this.UpdateStatus(signEvent);

            return(signEvent);
        }
        internal SignEvent Sign(string digitalSign)
        {
            Assertion.Assert(this.SignStatus == SignStatus.Pending || this.SignStatus == SignStatus.Revoked,
                             "Sign is allowed only to requests in pending or revoked status.");

            // ToDo: Ensure digitalSign is valid for RequestedTo user and Document.SignInputData

            var signEvent = new SignEvent(SignEventType.Signed, this, digitalSign);

            this.UpdateStatus(signEvent);

            return(signEvent);
        }