public HttpResponseMessage SetOutOfOffice([FromBody] OOFWrapper wrapper) { try { return(Request.CreateResponse(HttpStatusCode.OK, _service.SetOutOfOffice(wrapper))); } catch (SmartException ex) { return(CreateErrorMessageResponse(ex)); } }
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); }
public OOFWrapper GetOutOffice() { var criteria = new OOFWrapper(); using (var client = new K2Client(_currentUser)) { criteria = client.GetOOFCriteria(); } //return criteria; return(criteria); }
public bool SetOutOffice(OOFWrapper wrapper) { bool result = false; using (var client = new K2Client(_currentUser)) { client.SetOOFCriteria(wrapper); result = true; } return(result); }
/// <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); }
public bool SetOutOfOffice(OOFWrapper wrapper) { return(_provider.SetOutOffice(wrapper)); }
public bool SetOutOffice(OOFWrapper wrapper) { return(_client.SetOutOfOffice(wrapper)); }
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); }
/// <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); }