Beispiel #1
0
        /// <summary>
        /// Создать задачу на обработку приглашения к эл. обмену от контрагента.
        /// </summary>
        /// <param name="counterparty">Контрагент.</param>
        /// <param name="box">Абонентский ящик.</param>
        /// <param name="organizationId">Ид контрагента в сервисе обмена.</param>
        /// <param name="comment">Комментарий приглашения.</param>
        /// <returns>Задача на обработку приглашения к эл. обмену от контрагента.</returns>
        public static IIncomingInvitationTask Create(Parties.ICounterparty counterparty, IBusinessUnitBox box, string organizationId, string comment)
        {
            var counterpartyBox = counterparty.ExchangeBoxes.Where(x => Equals(x.OrganizationId, organizationId)).Select(o => o.CounterpartyBox).FirstOrDefault();
            var invitationTask  = IncomingInvitationTasks.Create();
            var subject         = IncomingInvitationTasks.Resources.TaskSubjectFormat(counterparty.Name, box.BusinessUnit.Name, box.ExchangeService.Name);

            invitationTask.Subject    = Exchange.PublicFunctions.Module.CutText(subject, invitationTask.Info.Properties.Subject.Length);
            invitationTask.ActiveText = IncomingInvitationTasks.Resources.TaskActiveTextFormat(counterparty.Name, box.BusinessUnit.Name, box.ExchangeService.Name);

            if (!string.IsNullOrWhiteSpace(counterpartyBox))
            {
                invitationTask.ActiveText += Environment.NewLine;
                invitationTask.ActiveText += Environment.NewLine;
                invitationTask.ActiveText += IncomingInvitationTasks.Resources.CounterpartyBox;
                invitationTask.ActiveText += Environment.NewLine + counterpartyBox;
            }

            if (!string.IsNullOrWhiteSpace(comment))
            {
                invitationTask.ActiveText += Environment.NewLine;
                invitationTask.ActiveText += Environment.NewLine;
                invitationTask.ActiveText += IncomingInvitationTasks.Resources.AssignmentComment;
                invitationTask.ActiveText += Environment.NewLine + comment;
            }
            invitationTask.Box          = box;
            invitationTask.Counterparty = counterparty;
            invitationTask.Assignee     = box.Responsible;
            invitationTask.MaxDeadline  = Calendar.Now.AddWorkingDays(invitationTask.Assignee, 2);
            invitationTask.Attachments.Add(counterparty);
            invitationTask.OrganizationId = organizationId;
            invitationTask.Save();
            invitationTask.Start();
            return(invitationTask);
        }
Beispiel #2
0
        public virtual void Accept(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            var task           = IncomingInvitationTasks.As(_obj.Task);
            var boxLine        = task.Counterparty.ExchangeBoxes.FirstOrDefault(x => Equals(x.Box, task.Box) && Equals(x.OrganizationId, task.OrganizationId ?? x.OrganizationId));
            var exchangeStatus = boxLine.Status;

            if (exchangeStatus != Sungero.Parties.CounterpartyExchangeBoxes.Status.Active)
            {
                var boxNotActiveMessage = Functions.BusinessUnitBox.CheckBusinessUnitBoxActive(task.Box);
                if (!string.IsNullOrWhiteSpace(boxNotActiveMessage))
                {
                    e.AddError(boxNotActiveMessage);
                    return;
                }

                if (!Docflow.PublicFunctions.Module.ShowConfirmationDialog(e.Action.ConfirmationMessage, null, null,
                                                                           Constants.IncomingInvitationTask.IncomingInvitationAssignmentConfirmDialogID.Accept))
                {
                    e.Cancel();
                }

                var organizationId = boxLine.OrganizationId;
                var result         = Functions.BusinessUnitBox.Remote.AcceptInvitation(task.Box, task.Counterparty, organizationId, _obj.ActiveText);
                if (!string.IsNullOrWhiteSpace(result))
                {
                    e.AddError(result);
                }
            }
            else
            {
                if (!Docflow.PublicFunctions.Module.ShowConfirmationDialog(e.Action.ConfirmationMessage, null, null,
                                                                           Constants.IncomingInvitationTask.IncomingInvitationAssignmentConfirmDialogID.Accept))
                {
                    e.Cancel();
                }
            }
        }