Пример #1
0
 public HttpResponseMessage SetOutOfOffice([FromBody] OOFWrapper wrapper)
 {
     try {
         return(Request.CreateResponse(HttpStatusCode.OK, _service.SetOutOfOffice(wrapper)));
     } catch (SmartException ex) {
         return(CreateErrorMessageResponse(ex));
     }
 }
Пример #2
0
        public OOFWrapper GetOOFCriteria()
        {
            var config  = new OutOfOfficeConfig(_connection);
            var wrapper = new OOFWrapper();

            wrapper.Status = config.GetOOFStatus();

            var shared = config.LoadOOF();

            if (shared == null || shared.Count == 0)
            {
                return(wrapper);
            }

            var oof = shared[0];

            if (shared.Count == 1 && oof.WorkTypes != null && oof.WorkTypes.Count == 1)
            {
                var worktype     = oof.WorkTypes[0];
                var destinations = worktype.Destinations;
                wrapper.EndDate   = Convert.ToDateTime(oof.EndDate);
                wrapper.StartDate = Convert.ToDateTime(oof.StartDate);
                wrapper.ShareType = Convert.ToInt16(oof.ShareType);
                wrapper.WorkType  = config.GetWorktypeDto(worktype);

                foreach (WorkTypeException w in worktype.WorkTypeExceptions)
                {
                    var processPath = Convert.ToString(w.WorklistCriteria.Filters[0].Value);
                    var act         = Convert.ToString(w.WorklistCriteria.Filters[1].Value);

                    if (string.IsNullOrEmpty(processPath))
                    {
                        continue;
                    }
                    if (string.IsNullOrEmpty(act))
                    {
                        continue;
                    }

                    string activityKey = string.Format("{0}\\{1}", processPath, act);

                    var dto = new WorkTypeExceptionDto()
                    {
                        Name           = w.Name,
                        Process        = processPath,
                        ProcessPath    = processPath,
                        Activity       = act,
                        ActDisplayName = activityKey,
                        Destinations   = config.GetDestinationDto(w.Destinations)
                    };
                    wrapper.WorkType.WorkTypeExceptions.Add(dto);
                }
            }
            return(wrapper);
        }
Пример #3
0
        public OOFWrapper GetOutOffice()
        {
            var criteria = new OOFWrapper();

            using (var client = new K2Client(_currentUser))
            {
                criteria = client.GetOOFCriteria();
            }
            //return criteria;
            return(criteria);
        }
Пример #4
0
        public bool SetOutOffice(OOFWrapper wrapper)
        {
            bool result = false;

            using (var client = new K2Client(_currentUser))
            {
                client.SetOOFCriteria(wrapper);
                result = true;
            }
            return(result);
        }
Пример #5
0
        /// <summary>
        /// Create or set the Out Of Office of current user
        /// </summary>
        /// <param name="wrapper">The Out Of Office criteria</param>
        /// <returns>Success(true) or Fail(False)</returns>
        public bool SetOutOfOffice(OOFWrapper wrapper)
        {
            if (wrapper.WorkType == null)
            {
                _connection.SetUserStatus(Convert.ToBoolean(wrapper.Status) ? UserStatuses.Available : UserStatuses.OOF);
                return(false);
            }


            bool           isNew          = false;
            WorklistShares worklistShares = new WorklistShares();

            worklistShares = _connection.GetCurrentSharingSettings(ShareType.OOF);
            WorklistShare worklistShare = null;

            if (worklistShares.Count > 0)
            {
                worklistShare           = worklistShares[0];
                worklistShare.ShareType = ShareType.OOF;
            }
            else
            {
                isNew = true;
            }

            if (worklistShare == null)
            {
                worklistShare           = new WorklistShare();
                worklistShare.ShareType = ShareType.OOF;
                isNew = true;
            }


            worklistShare.StartDate = wrapper.StartDate;
            worklistShare.EndDate   = wrapper.EndDate;

            WorkTypes workTypes = worklistShare.WorkTypes;
            WorkType  workType  = new WorkType();

            if (workTypes.Count > 0)
            {
                workType = workTypes[0];
            }
            else
            {
                workType = new WorkType();
                workTypes.Add(workType);
            }
            workType.Name = Guid.NewGuid().ToString();
            Destinations destinations = new Destinations();

            foreach (DestinationDto dest in wrapper.WorkType.Destinations)
            {
                var destination = new Destination(dest.LoginName.FQNWithK2Label(), DestinationType.User);
                destinations.Add(destination);
            }

            workType.Destinations       = destinations;
            workType.WorkTypeExceptions = GetWorkTypeExceptions(wrapper.WorkType.WorkTypeExceptions);
            worklistShare.WorkTypes     = workTypes;

            if (isNew)
            {
                _connection.ShareWorkList(worklistShare);
            }
            _connection.UpdateWorkType(worklistShare.WorkTypes[0]);
            _connection.SetUserStatus(Convert.ToBoolean(wrapper.Status) ? UserStatuses.Available : UserStatuses.OOF);


            return(true);
        }
Пример #6
0
 public bool SetOutOfOffice(OOFWrapper wrapper)
 {
     return(_provider.SetOutOffice(wrapper));
 }
Пример #7
0
 public bool SetOutOffice(OOFWrapper wrapper)
 {
     return(_client.SetOutOfOffice(wrapper));
 }
Пример #8
0
        public OOFWrapper GetOutOffice()
        {
            var wrapper = new OOFWrapper();

            wrapper.Status = _client.GetOOFStatus();

            var shared = _client.LoadOOF();

            if (shared == null || shared.Count == 0)
            {
                return(wrapper);
            }

            var oof = shared[0];

            if (shared.Count == 1 && oof.WorkTypes != null && oof.WorkTypes.Count == 1)
            {
                var worktype     = oof.WorkTypes[0];
                var destinations = new List <DestinationDto>();
                wrapper.EndDate   = Convert.ToDateTime(oof.EndDate);
                wrapper.StartDate = Convert.ToDateTime(oof.StartDate);
                wrapper.ShareType = Convert.ToInt16(oof.ShareType);

                for (int i = 0; i < worktype.Destinations.Count; i++)
                {
                    destinations.Add(new DestinationDto()
                    {
                        LoginName = worktype.Destinations[i].Name
                    });
                }

                wrapper.WorkType = new WorkTypeDto()
                {
                    WorklistCriteria = GetWorklistCriteriaDto(worktype.WorklistCriteria),
                    Name             = worktype.Name,
                    Destinations     = destinations
                };

                foreach (K2.WorkTypeException w in worktype.WorkTypeExceptions)
                {
                    var processPath = Convert.ToString(w.WorklistCriteria.Filters[0].Value);
                    var act         = Convert.ToString(w.WorklistCriteria.Filters[1].Value);

                    if (string.IsNullOrEmpty(processPath))
                    {
                        continue;
                    }
                    if (string.IsNullOrEmpty(act))
                    {
                        continue;
                    }

                    wrapper.WorkType.WorkTypeExceptions.Add(new WorkTypeExceptionDto()
                    {
                        Name           = w.Name,
                        Process        = null,
                        ProcessPath    = processPath,
                        Activity       = act,
                        ActDisplayName = null,
                        DestUsers      = new List <string>()
                    });
                }
            }

            return(wrapper);
        }
Пример #9
0
        /// <summary>
        /// Create or set the Out Of Office of current user
        /// </summary>
        /// <param name="wrapper">The Out Of Office criteria</param>
        /// <returns>Success(true) or Fail(False)</returns>
        public bool SetOutOfOffice(OOFWrapper wrapper)
        {
            if (wrapper.WorkType == null)
            {
                using (Connection workflowClient = this.GetWorkflowClient()) {
                    workflowClient.SetUserStatus(Convert.ToBoolean(wrapper.Status) ? UserStatuses.Available : UserStatuses.OOF);
                }

                return(false);
            }

            using (Connection workflowClient = this.GetWorkflowClient()) {
                bool           isNew          = false;
                WorklistShares worklistShares = new WorklistShares();
                worklistShares = workflowClient.GetCurrentSharingSettings(ShareType.OOF);
                WorklistShare worklistShare = null;
                if (worklistShares.Count > 0)
                {
                    worklistShare           = worklistShares[0];
                    worklistShare.ShareType = ShareType.OOF;
                }
                else
                {
                    isNew = true;
                }

                if (worklistShare == null)
                {
                    worklistShare           = new WorklistShare();
                    worklistShare.ShareType = ShareType.OOF;
                    isNew = true;
                }


                worklistShare.StartDate = wrapper.StartDate;
                worklistShare.EndDate   = wrapper.EndDate;

                WorkTypes workTypes = worklistShare.WorkTypes;
                WorkType  workType  = new WorkType();

                if (workTypes.Count > 0)
                {
                    workType = workTypes[0];
                }
                else
                {
                    workType = new WorkType();
                    workTypes.Add(workType);
                }
                workType.Name = Guid.NewGuid().ToString();
                Destinations destinations = new Destinations();

                foreach (DestinationDto dest in wrapper.WorkType.Destinations)
                {
                    if (SecurityLabelUtils.IsCorrectUserName(dest.LoginName))
                    {
                        var destination = new K2.Destination(SecurityLabelUtils.GetNameWithLabel(dest.LoginName), DestinationType.User);
                        destinations.Add(destination);
                    }
                }

                workType.Destinations       = destinations;
                workType.WorkTypeExceptions = GetWorkTypeExceptions(wrapper.WorkType.WorkTypeExceptions);
                worklistShare.WorkTypes     = workTypes;

                if (isNew)
                {
                    workflowClient.ShareWorkList(worklistShare);
                }
                workflowClient.UpdateWorkType(worklistShare.WorkTypes[0]);
                workflowClient.SetUserStatus(Convert.ToBoolean(wrapper.Status) ? UserStatuses.Available : UserStatuses.OOF);
            }

            return(true);
        }