using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft.Xrm.Sdk.Query; /// <summary> /// 约会 /// </summary> public class AppointmentHelper { public static readonly string entityName = "appointment"; public Guid appointmentId = Guid.Empty; public IOrganizationService service; /// <summary> /// 创建约会 /// </summary> public void Create() { WhoAmIRequest userRequest = new WhoAmIRequest(); WhoAmIResponse userResponse = (WhoAmIResponse)service.Execute(userRequest); Entity activitypartyEn = new Entity() { LogicalName = "activityparty" }; activitypartyEn["partyId"] = new EntityReference() { LogicalName = "systemuser", Id = userResponse.UserId }; Entity en = new Entity() { LogicalName = entityName }; en["subject"] = "约会测试"; en["scheduledstart"] = DateTime.Now.AddHours(1); en["scheduledend"] = DateTime.Now.AddHours(2); en["location"] = "办公室"; en["requiredattendees"] = new Entity[] { activitypartyEn }; en["organizer"] = new Entity[] { activitypartyEn }; appointmentId = service.Create(en); } /// <summary> /// 向现有约会中添加定期信息,以使其成为定期主约会 /// </summary> /// <param name="target">目标信息</param> public void AddRecurrence(Entity target) { AddRecurrenceRequest request = new AddRecurrenceRequest(); request.AppointmentId = appointmentId; request.Target = target; AddRecurrenceResponse response = (AddRecurrenceResponse)service.Execute(request); Guid id = response.id; } /// <summary> /// 将约会分派给其他用户或团队 /// </summary> /// <param name="assignee">用户或团队引用</param> public void Assign(EntityReference assignee) { AssignRequest request = new AssignRequest(); request.Target = new EntityReference() { LogicalName = entityName, Id = appointmentId }; request.Assignee = assignee; AssignResponse response = (AssignResponse)service.Execute(request); } /// <summary> /// 安排或预定约会 /// </summary> public void Book() { BookRequest request = new BookRequest(); request.Target = new Entity() { LogicalName = entityName, Id = appointmentId }; BookResponse response = (BookResponse)service.Execute(request); ValidationResult validationResult = response.ValidationResult; } /// <summary> /// 重新安排约会 /// </summary> public void Reschedule() { RescheduleRequest request = new RescheduleRequest(); request.Target = new Entity() { LogicalName = entityName, Id = appointmentId }; RescheduleResponse response = (RescheduleResponse)service.Execute(request); ValidationResult validationResult = response.ValidationResult; } /// <summary> /// /// 删除约会 /// /// </summary> public void Delete() { service.Delete(entityName, appointmentId); } }