private ToDoList(IBaseCamp baseCamp, IRestWebService service, JObject node, int projectID) { _camp = baseCamp; _service = service; ID = node["id"].ToObject<int>(); ProjectID = projectID; Items = new List<IToDoListItem>(); foreach (var toDoListItem in node["todos"]["remaining"]) { var path = string.Format("projects/{0}/{1}/{2}.json", ProjectID, "todos", toDoListItem["id"]); foreach (JObject node1 in _service.GetRequestResponseElement(path)) { Items.Add(ToDoListItem.GetInstance(_camp, node1)); } } foreach (var toDoListItem in node["todos"]["completed"]) { var path = string.Format("projects/{0}/{1}/{2}.json", ProjectID, "todos", toDoListItem["id"]); foreach (JObject node1 in _service.GetRequestResponseElement(path)) { Items.Add(ToDoListItem.GetInstance(_camp, node1)); } } }
private ToDoListItem(IBaseCamp camp, IRestWebService service, XmlNode node) { _camp = camp; _service = service; ID = XmlHelpers.ParseInteger(node, "id"); Content = XmlHelpers.ChildNodeText(node, "content"); //Position = XmlHelpers.ParseInteger(node, "position"); CreatedOn = XmlHelpers.ParseDateTime(node, "created-on"); CreatorID = XmlHelpers.ParseInteger(node, "creator-id"); Completed = XmlHelpers.ParseBool(node, "completed"); //CommentsCount = XmlHelpers.ParseInteger(node, "comments-count"); if (node.SelectSingleNode("responsible-party-type") != null) { ResponsiblePartyType = XmlHelpers.ChildNodeText(node, "responsible-party-type"); ResponsiblePartyID = XmlHelpers.ParseInteger(node, "responsible-party-id"); } else { ResponsiblePartyType = string.Empty; ResponsiblePartyID = -1; } /*if (Completed) * { * CompletedOn = XmlHelpers.ParseDateTime(node, "completed-on", DateTime.MinValue); * CompleterID = XmlHelpers.ParseInteger(node, "completer-id"); * } * else * { * CompletedOn = DateTime.MinValue; * CompleterID = -1; * }*/ }
private ToDoListItem(IBaseCamp camp, IRestWebService service, JObject node) { _camp = camp; _service = service; ID = node["id"].ToObject<int>(); Content = node["content"].ToObject<string>(); CreatedOn = node["created_at"].ToObject<DateTime>(); CreatorID = node["creator"]["id"].ToObject<int>(); Completed = node["completed"].ToObject<bool>(); RecentComments = new List<IComment>(); if (node["assignee"] != null) { ResponsibleID = node["assignee"]["id"].ToObject<int>(); } else { ResponsibleID = -1; } if (node["due_on"] != null && node["due_on"].ToObject<string>() != null) { Deadline = node["due_on"].ToObject<DateTime>(); } foreach (var comment in node["comments"]) { RecentComments.Add(Comment.GetInstance(camp, (JObject)comment)); } }
private ToDoListItem(IBaseCamp camp, IRestWebService service, JObject node) { _camp = camp; _service = service; ID = node["id"].ToObject <int>(); Content = node["content"].ToObject <string>(); CreatedOn = node["created_at"].ToObject <DateTime>(); CreatorID = node["creator"]["id"].ToObject <int>(); Completed = node["completed"].ToObject <bool>(); RecentComments = new List <IComment>(); if (node["assignee"] != null) { ResponsibleID = node["assignee"]["id"].ToObject <int>(); } else { ResponsibleID = -1; } if (node["due_on"] != null && node["due_on"].ToObject <string>() != null) { Deadline = node["due_on"].ToObject <DateTime>(); } foreach (var comment in node["comments"]) { RecentComments.Add(Comment.GetInstance(camp, (JObject)comment)); } }
private ToDoList(IBaseCamp baseCamp, IRestWebService service, JObject node, int projectID) { _camp = baseCamp; _service = service; ID = node["id"].ToObject <int>(); ProjectID = projectID; Items = new List <IToDoListItem>(); foreach (var toDoListItem in node["todos"]["remaining"]) { var path = string.Format("projects/{0}/{1}/{2}.json", ProjectID, "todos", toDoListItem["id"]); foreach (JObject node1 in _service.GetRequestResponseElement(path)) { Items.Add(ToDoListItem.GetInstance(_camp, node1)); } } foreach (var toDoListItem in node["todos"]["completed"]) { var path = string.Format("projects/{0}/{1}/{2}.json", ProjectID, "todos", toDoListItem["id"]); foreach (JObject node1 in _service.GetRequestResponseElement(path)) { Items.Add(ToDoListItem.GetInstance(_camp, node1)); } } }
private ToDoListItem(IBaseCamp camp, IRestWebService service, XmlNode node) { _camp = camp; _service = service; ID = XmlHelpers.ParseInteger(node, "id"); Content = XmlHelpers.ChildNodeText(node, "content"); //Position = XmlHelpers.ParseInteger(node, "position"); CreatedOn = XmlHelpers.ParseDateTime(node, "created-on"); CreatorID = XmlHelpers.ParseInteger(node, "creator-id"); Completed = XmlHelpers.ParseBool(node, "completed"); //CommentsCount = XmlHelpers.ParseInteger(node, "comments-count"); if (node.SelectSingleNode("responsible-party-type") != null) { ResponsiblePartyType = XmlHelpers.ChildNodeText(node, "responsible-party-type"); ResponsiblePartyID = XmlHelpers.ParseInteger(node, "responsible-party-id"); } else { ResponsiblePartyType = string.Empty; ResponsiblePartyID = -1; } /*if (Completed) { CompletedOn = XmlHelpers.ParseDateTime(node, "completed-on", DateTime.MinValue); CompleterID = XmlHelpers.ParseInteger(node, "completer-id"); } else { CompletedOn = DateTime.MinValue; CompleterID = -1; }*/ }
private Comment(IBaseCamp camp, JObject node) { _camp = camp; ID = node["id"].ToObject<int>(); AuthorID = node["creator"]["id"].ToObject<int>(); Body = node["content"].ToObject<string>(); CreatedAt = node["created_at"].ToObject<DateTime>(); }
private Comment(IBaseCamp camp, JObject node) { _camp = camp; ID = node["id"].ToObject <int>(); AuthorID = node["creator"]["id"].ToObject <int>(); Body = node["content"].ToObject <string>(); CreatedAt = node["created_at"].ToObject <DateTime>(); }
private Category(IBaseCamp camp, JObject node) { _camp = camp; ID = node["id"].ToObject<int>(); Name = node["name"].ToObject<string>(); ProjectID = node["project-id"].ToObject<int>(); Type = (node["type"].ToObject<string>() == "PostCategory") ? CategoryType.Post : CategoryType.Attachment; }
private Project(IBaseCamp baseCamp, IRestWebService service, JObject node) { Camp = baseCamp; _service = service; ID = node["id"].ToObject<int>(); Name = node["name"].ToObject<string>(); Description = node["description"].ToObject<string>(); IsClosed = node["archived"].ToObject<bool>(); }
private Category(IBaseCamp camp, JObject node) { _camp = camp; ID = node["id"].ToObject <int>(); Name = node["name"].ToObject <string>(); ProjectID = node["project-id"].ToObject <int>(); Type = (node["type"].ToObject <string>() == "PostCategory") ? CategoryType.Post : CategoryType.Attachment; }
private Person(IBaseCamp camp, JObject node) { ID = node["id"].ToObject<int>(); EmailAddress = node["email_address"].ToObject<string>(); UserName = node["name"].ToObject<string>(); if (node["avatar_url"] != null) AvatarUrl = node["avatar_url"].ToObject<string>(); }
private Project(IBaseCamp baseCamp, IRestWebService service, JObject node) { Camp = baseCamp; _service = service; ID = node["id"].ToObject <int>(); Name = node["name"].ToObject <string>(); Description = node["description"].ToObject <string>(); IsClosed = node["archived"].ToObject <bool>(); }
private Category(IBaseCamp camp, XmlNode node) { _camp = camp; ID = XmlHelpers.ParseInteger(node, "id"); Name = XmlHelpers.ChildNodeText(node, "name"); ProjectID = XmlHelpers.ParseInteger(node, "project-id"); //ElementsCount = XmlHelpers.ParseInteger(node, "elements-count"); Type = (XmlHelpers.ChildNodeText(node, "type") == "PostCategory") ? CategoryType.Post : CategoryType.Attachment; }
private Person(IBaseCamp camp, JObject node) { ID = node["id"].ToObject <int>(); EmailAddress = node["email_address"].ToObject <string>(); UserName = node["name"].ToObject <string>(); if (node["avatar_url"] != null) { AvatarUrl = node["avatar_url"].ToObject <string>(); } }
private Account(IBaseCamp camp, XmlNode node) { _camp = camp; Id = XmlHelpers.ParseInteger(node, "id"); Name = XmlHelpers.ChildNodeText(node, "name"); AccountHolderId = XmlHelpers.ParseInteger(node, "account-holder-id"); SSLEnabled = XmlHelpers.ParseBool(node, "ssl-enabled"); EmailNotificationEnabled = XmlHelpers.ParseBool(node, "email-notification-enabled"); TimeTrackingEnabled = XmlHelpers.ParseBool(node, "time-tracking-enabled"); UpdatedAt = XmlHelpers.ParseDateTime(node, "updated-at", DateTime.MinValue); }
private TimeEntry(IBaseCamp camp, XmlNode node) { Camp = camp; ID = XmlHelpers.ParseInteger(node, "id"); ProjectID = XmlHelpers.ParseInteger(node, "project-id"); PersonID = XmlHelpers.ParseInteger(node, "person-id"); Date = XmlHelpers.ParseDateTime(node, "date"); Hours = ConvertToDouble(XmlHelpers.ChildNodeText(node, "hours")); Description = XmlHelpers.ChildNodeText(node, "description"); ToDoItemID = XmlHelpers.ParseInteger(node, "todo-item-id"); }
private TimeEntry(IBaseCamp camp, JObject node) { Camp = camp; ID = node["id"].ToObject <int>(); ProjectID = node["project-id"].ToObject <int>(); PersonID = node["person-id"].ToObject <int>(); Date = node["date"].ToObject <DateTime>(); Hours = node["hours"].ToObject <int>(); Description = node["description"].ToObject <string>(); ToDoItemID = node["todo-item-id"].ToObject <int>(); }
private TimeEntry(IBaseCamp camp, JObject node) { Camp = camp; ID = node["id"].ToObject<int>(); ProjectID = node["project-id"].ToObject<int>(); PersonID = node["person-id"].ToObject<int>(); Date = node["date"].ToObject<DateTime>(); Hours = node["hours"].ToObject<int>(); Description = node["description"].ToObject<string>(); ToDoItemID = node["todo-item-id"].ToObject<int>(); }
private Milestone(IBaseCamp camp, JObject node) { _camp = camp; ID = node["id"].ToObject<int>(); Title = node["title"].ToObject<string>(); CreatedOn = node["created-on"].ToObject<DateTime>(); Deadline = node["deadline"].ToObject<DateTime>(); Title = node["title"].ToObject<string>(); Completed = node["completed"].ToObject<bool>(); ProjectID = node["project-id"].ToObject<int>(); }
private Milestone(IBaseCamp camp, JObject node) { _camp = camp; ID = node["id"].ToObject <int>(); Title = node["title"].ToObject <string>(); CreatedOn = node["created-on"].ToObject <DateTime>(); Deadline = node["deadline"].ToObject <DateTime>(); Title = node["title"].ToObject <string>(); Completed = node["completed"].ToObject <bool>(); ProjectID = node["project-id"].ToObject <int>(); }
private Project(IBaseCamp baseCamp, IRestWebService service, XmlNode node) { Camp = baseCamp; _service = service; ID = XmlHelpers.ParseInteger(node, "id"); Name = XmlHelpers.ChildNodeText(node, "name"); Description = XmlHelpers.ChildNodeText(node, "announcement"); //CreatedOn = XmlHelpers.ParseDateTime(node, "created-on"); //LastChangedOn = XmlHelpers.ParseDateTime(node, "last-changed-on", CreatedOn); Status = XmlHelpers.ChildNodeText(node, "status"); }
private Attachment(IBaseCamp camp, JObject node) { _camp = camp; AuthorID = node["creator"]["id"].ToObject <int>(); CreatedOn = node["created_at"].ToObject <DateTime>(); ByteSize = node["byte_size"].ToObject <int>(); DownloadUrl = node["url"].ToObject <string>(); ID = node["key"].ToObject <string>(); Name = node["name"].ToObject <string>(); OwnerID = node["attachable"]["id"].ToObject <int>(); OwnerType = node["attachable"]["type"].ToObject <string>(); }
private Comment(IBaseCamp camp, XmlNode node) { _camp = camp; ID = XmlHelpers.ParseInteger(node, "id"); AuthorID = XmlHelpers.ParseInteger(node, "author-id"); //CommentableID = XmlHelpers.ParseInteger(node, "commentable-id"); //CommentableType = XmlHelpers.ChildNodeText(node, "commentable-type"); Body = XmlHelpers.ChildNodeText(node, "body"); //EmailedFrom = XmlHelpers.ChildNodeText(node, "emailed-from"); //AttachmentsCount = XmlHelpers.ParseInteger(node, "attachments-count"); CreatedAt = XmlHelpers.ParseDateTime(node, "created-at"); }
private Attachment(IBaseCamp camp, JObject node) { _camp = camp; AuthorID = node["creator"]["id"].ToObject<int>(); CreatedOn = node["created_at"].ToObject<DateTime>(); ByteSize = node["byte_size"].ToObject<int>(); DownloadUrl = node["url"].ToObject<string>(); ID = node["key"].ToObject<string>(); Name = node["name"].ToObject<string>(); OwnerID = node["attachable"]["id"].ToObject<int>(); OwnerType = node["attachable"]["type"].ToObject<string>(); }
private ToDoList(IBaseCamp baseCamp, IRestWebService service, XmlNode node) { _camp = baseCamp; _service = service; ID = XmlHelpers.ParseInteger(node, "id"); //Name = XmlHelpers.ChildNodeText(node, "name"); //Description = XmlHelpers.ChildNodeText(node, "description"); ProjectID = XmlHelpers.ParseInteger(node, "project-id"); MilestoneID = XmlHelpers.ParseInteger(node, "milestone-id"); //Position = XmlHelpers.ParseInteger(node, "position"); //Private = XmlHelpers.ParseBool(node, "private"); //Tracked = XmlHelpers.ParseBool(node, "tracked"); }
private Post(IBaseCamp camp, JObject node) { _camp = camp; ID = node["id"].ToObject <int>(); Title = node["subject"].ToObject <string>(); Body = node["content"].ToObject <string>(); PostedOn = node["created_at"].ToObject <DateTime>(); AuthorID = node["creator"]["id"].ToObject <int>(); RecentComments = new List <IComment>(); foreach (var comment in node["comments"]) { RecentComments.Add(Comment.GetInstance(camp, (JObject)comment)); } }
private Milestone(IBaseCamp camp, XmlNode node) { _camp = camp; ID = XmlHelpers.ParseInteger(node, "id"); Title = XmlHelpers.ChildNodeText(node, "title"); CreatedOn = XmlHelpers.ParseDateTime(node, "created-on"); Deadline = XmlHelpers.ParseDateTime(node, "deadline", CreatedOn); Title = XmlHelpers.ChildNodeText(node, "title"); //WantsNotification = XmlHelpers.ParseBool(node, "wants-notification"); //ResponsiblePartyID = XmlHelpers.ParseInteger(node, "responsible-party-id"); Completed = XmlHelpers.ParseBool(node, "completed"); //CreatorID = XmlHelpers.ParseInteger(node, "creator-id"); ProjectID = XmlHelpers.ParseInteger(node, "project-id"); }
private Post(IBaseCamp camp, JObject node) { _camp = camp; ID = node["id"].ToObject<int>(); Title = node["subject"].ToObject<string>(); Body = node["content"].ToObject<string>(); PostedOn = node["created_at"].ToObject<DateTime>(); AuthorID = node["creator"]["id"].ToObject<int>(); RecentComments = new List<IComment>(); foreach (var comment in node["comments"]) { RecentComments.Add(Comment.GetInstance(camp, (JObject)comment)); } }
private Company(IBaseCamp camp, IRestWebService service, XmlNode node) { _camp = camp; _service = service; Id = XmlHelpers.ParseInteger(node, "id"); Name = XmlHelpers.ChildNodeText(node, "name"); Address1 = XmlHelpers.ChildNodeText(node, "address-one"); Address2 = XmlHelpers.ChildNodeText(node, "address-two"); City = XmlHelpers.ChildNodeText(node, "city"); State = XmlHelpers.ChildNodeText(node, "state"); ZipCode = XmlHelpers.ChildNodeText(node, "zip"); Country = XmlHelpers.ChildNodeText(node, "country"); WebAddress = XmlHelpers.ChildNodeText(node, "web-address"); PhoneNumberOffice = XmlHelpers.ChildNodeText(node, "phone-number-office"); PhoneNumberFax = XmlHelpers.ChildNodeText(node, "phone-number-fax"); TimeZoneId = XmlHelpers.ChildNodeText(node, "time-zone-id"); CanSeePrivate = XmlHelpers.ParseBool(node, "can-see-private"); UrlName = XmlHelpers.ChildNodeText(node, "url-name"); }
private Attachment(IBaseCamp camp, XmlNode node) { _camp = camp; ProjectID = XmlHelpers.ParseInteger(node, "project-id"); CategoryID = XmlHelpers.ParseInteger(node, "category-id"); AuthorID = XmlHelpers.ParseInteger(node, "person-id"); CreatedOn = XmlHelpers.ParseDateTime(node, "created-on"); ByteSize = XmlHelpers.ParseInteger(node, "byte-size"); Vers = XmlHelpers.ParseInteger(node, "version"); DownloadUrl = XmlHelpers.ChildNodeText(node, "download-url"); Collection = XmlHelpers.ParseInteger(node, "collection"); //Current = XmlHelpers.ParseBool(node, "current"); Description = XmlHelpers.ChildNodeText(node, "description"); ID = XmlHelpers.ParseInteger(node, "id"); Name = XmlHelpers.ChildNodeText(node, "name"); OwnerID = XmlHelpers.ParseInteger(node, "owner-id"); OwnerType = XmlHelpers.ChildNodeText(node, "owner-type"); //Private = XmlHelpers.ParseBool(node, "private"); }
private Company(IBaseCamp camp, IRestWebService service, JObject node) { _camp = camp; _service = service; Id = node["id"].ToObject<int>(); Name = node["name"].ToObject<string>(); Address1 = node["address-one"].ToObject<string>(); Address2 = node["address-two"].ToObject<string>(); City = node["city"].ToObject<string>(); State = node["state"].ToObject<string>(); ZipCode = node["zip"].ToObject<string>(); Country = node["country"].ToObject<string>(); WebAddress = node["web-address"].ToObject<string>(); PhoneNumberOffice = node["phone-number-office"].ToObject<string>(); PhoneNumberFax = node["phone-number-fax"].ToObject<string>(); TimeZoneId = node["time-zone-id"].ToObject<string>(); CanSeePrivate = node["can-see-private"].ToObject<bool>(); UrlName = node["url-name"].ToObject<string>(); }
private Company(IBaseCamp camp, IRestWebService service, JObject node) { _camp = camp; _service = service; Id = node["id"].ToObject <int>(); Name = node["name"].ToObject <string>(); Address1 = node["address-one"].ToObject <string>(); Address2 = node["address-two"].ToObject <string>(); City = node["city"].ToObject <string>(); State = node["state"].ToObject <string>(); ZipCode = node["zip"].ToObject <string>(); Country = node["country"].ToObject <string>(); WebAddress = node["web-address"].ToObject <string>(); PhoneNumberOffice = node["phone-number-office"].ToObject <string>(); PhoneNumberFax = node["phone-number-fax"].ToObject <string>(); TimeZoneId = node["time-zone-id"].ToObject <string>(); CanSeePrivate = node["can-see-private"].ToObject <bool>(); UrlName = node["url-name"].ToObject <string>(); }
private Post(IBaseCamp camp, XmlNode node) { _camp = camp; ID = XmlHelpers.ParseInteger(node, "id"); Title = XmlHelpers.ChildNodeText(node, "title"); Body = XmlHelpers.ChildNodeText(node, "body"); PostedOn = XmlHelpers.ParseDateTime(node, "posted-on"); ProjectID = XmlHelpers.ParseInteger(node, "project-id"); //CategoryID = XmlHelpers.ParseInteger(node, "category-id"); AuthorID = XmlHelpers.ParseInteger(node, "author-id"); //MilestoneID = XmlHelpers.ParseInteger(node, "milestone-id"); //CommentsCount = XmlHelpers.ParseInteger(node, "comments-count"); //AttachmentsCount = XmlHelpers.ParseInteger(node, "attachments-count"); //UseTextile = XmlHelpers.ParseBool(node, "use-textile"); //ExtendedBody = XmlHelpers.ChildNodeText(node, "extended-body"); //DisplayBody = XmlHelpers.ChildNodeText(node, "display-body"); //DisplayExtendedBody = XmlHelpers.ChildNodeText(node, "display-extended-body"); //Private = XmlHelpers.ParseBool(node, "private"); }
private Person(IBaseCamp camp, XmlNode node) { _camp = camp; ID = XmlHelpers.ParseInteger(node, "id"); FirstName = XmlHelpers.ChildNodeText(node, "first-name"); LastName = XmlHelpers.ChildNodeText(node, "last-name"); EmailAddress = XmlHelpers.ChildNodeText(node, "email-address"); PhoneNumberOffice = XmlHelpers.ChildNodeText(node, "phone-number-office"); PhoneNumberOfficeExt = XmlHelpers.ChildNodeText(node, "phone-number-office-ext"); PhoneNumberMobile = XmlHelpers.ChildNodeText(node, "phone-number-mobile"); PhoneNumberHome = XmlHelpers.ChildNodeText(node, "phone-number-home"); PhoneNumberFax = XmlHelpers.ChildNodeText(node, "phone-number-fax"); UserName = XmlHelpers.ChildNodeText(node, "user-name"); Administrator = XmlHelpers.ParseBool(node, "administrator"); Deleted = XmlHelpers.ParseBool(node, "deleted"); Title = XmlHelpers.ChildNodeText(node, "title"); ImService = XmlHelpers.ChildNodeText(node, "im-service"); ImHandle = XmlHelpers.ChildNodeText(node, "im-handle"); CanPost = XmlHelpers.ParseInteger(node, "can-post"); HasAccessToNewProjects = XmlHelpers.ParseBool(node, "has-access-to-new-projects"); AvatarUrl = XmlHelpers.ChildNodeText(node, "avatar-url"); }
private void SaveUsers(IBaseCamp basecampManager) { var employees = basecampManager.People; var step = 100.0 / employees.Count(); foreach (var person in employees) { try { if (TenantExtra.GetRemainingCountUsers() <= 0) { _importUsersOverLimitAsCollaborators = true; } StatusState.StatusUserProgress(step); var userID = FindUserByEmail(person.EmailAddress); if (userID.Equals(Guid.Empty)) { var userName = Regex.Replace(person.UserName, @"[!|@|#|$|%|'|+]", ""); var name = userName.Split(' '); var userInfo = new UserInfo { Email = person.EmailAddress, FirstName = name.First(), LastName = name.Count() > 1 ? name.Last() : "", UserName = userName, Status = EmployeeStatus.Active, }; var collaboratorFlag = _importUsersOverLimitAsCollaborators || _importUsersAsCollaborators; if (!UserManagerWrapper.ValidateEmail(userInfo.Email)) { throw new Exception("Invalid email"); } var newUserInfo = UserManagerWrapper.AddUser(userInfo, UserManagerWrapper.GeneratePassword(), false, !_disableNotifications, collaboratorFlag); _newUsersID.Add(new UserIDWrapper { InBasecamp = person.ID, InProjects = newUserInfo.ID }); //save user avatar const string emptyAvatar = "http://asset0.37img.com/global/default_avatar_v1_4/avatar.gif?r=3"; if (person.AvatarUrl != emptyAvatar) { UserPhotoManager.SaveOrUpdatePhoto(newUserInfo.ID, StreamFile(person.AvatarUrl)); } } else { _newUsersID.Add(new UserIDWrapper { InBasecamp = person.ID, InProjects = userID }); } } catch (Exception e) { StatusState.StatusLogError(string.Format(ImportResource.FailedToSaveUser, person.EmailAddress), e); LogError(string.Format("user '{0}' failed", person.EmailAddress), e); _newUsersID.RemoveAll(x => x.InBasecamp == person.ID); } } }
public static ToDoList GetInstance(IBaseCamp baseCamp, JObject node, int projectID) { return(new ToDoList(baseCamp, baseCamp.Service, node, projectID)); }
public static ICompany GetInstance(IBaseCamp camp, XmlNode node) { return new Company(camp, camp.Service, node); }
public static IMilestone GetInstance(IBaseCamp camp, JObject node) { return new Milestone(camp, node); }
public static IMilestone GetInstance(IBaseCamp camp, JObject node) { return(new Milestone(camp, node)); }
public static IToDoListItem GetInstance(IBaseCamp camp, JObject node) { return(new ToDoListItem(camp, camp.Service, node)); }
private void SaveFiles(IBaseCamp basecampManeger, IEnumerable<IAttachment> attachments, int projectID) { var step = 100.0 / attachments.Count(); Status.LogInfo(string.Format(ImportResource.ImportFileStarted, attachments.Count())); //select last version foreach (var attachment in attachments) { Status.FileProgress += step; try { var httpWReq = basecampManeger.Service.GetRequest(attachment.DownloadUrl); using (var httpWResp = (HttpWebResponse)httpWReq.GetResponse()) { if (attachment.ByteSize > SetupInfo.MaxUploadSize) { Status.LogError(string.Format(ImportResource.FailedSaveFileMaxSizeExided, attachment.Name), new Exception()); continue; } var file = new ASC.Files.Core.File { FolderID = FileEngine2.GetRoot(FindProject(projectID)), Title = attachment.Name, ContentLength = attachment.ByteSize, CreateBy = FindUser(attachment.AuthorID), CreateOn = attachment.CreatedOn.ToUniversalTime() }; if (file.Title.LastIndexOf('\\') != -1) file.Title = file.Title.Substring(file.Title.LastIndexOf('\\') + 1); file = FileEngine2.SaveFile(file, httpWResp.GetResponseStream()); if ("Message".Equals(attachment.OwnerType, StringComparison.OrdinalIgnoreCase)) { try { var messageId = FindMessage(attachment.OwnerID); FileEngine2.AttachFileToMessage(new Message {ID = messageId}, file.ID); //It's not critical } catch(Exception e) { LogError(string.Format("not critical. attaching file '{0}' to message failed", attachment.Name), e); } } if ("Todo".Equals(attachment.OwnerType, StringComparison.OrdinalIgnoreCase)) { try { var taskId = FindTask(attachment.OwnerID); FileEngine2.AttachFileToTask(new Task {ID = taskId}, file.ID); //It's not critical } catch(Exception e) { LogError(string.Format("not critical. attaching file '{0}' to message failed", attachment.Name), e); } } _newFilesID.Add(new FileIDWrapper { InBasecamp = attachment.ID, InProjects = file.ID }); } } catch(Exception e) { try { Status.LogError(string.Format(ImportResource.FailedToSaveFile, attachment.Name), e); LogError(string.Format("file '{0}' failed", attachment.Name), e); _newFilesID.RemoveAll(x => x.InBasecamp == attachment.ID); } catch(Exception ex) { LogError(string.Format("file remove after error failed"), ex); } } } }
private void SaveProjects(IBaseCamp basecampManager) { var projects = basecampManager.Projects; var step = 50.0 / projects.Count(); var projectEngine = _engineFactory.GetProjectEngine(); var participantEngine = _engineFactory.GetParticipantEngine(); if (_projects.Any()) { projects = projects.Where(r => _projects.Any(pr => pr == r.ID)).ToArray(); } foreach (var project in projects) { try { Status.LogInfo(string.Format(ImportResource.ImportProjectStarted, project.Name)); Status.ProjectProgress += step; var newProject = new Project { Status = !project.IsClosed ? ProjectStatus.Open : ProjectStatus.Closed, Title = ReplaceLineSeparator(project.Name), Description = project.Description, Responsible = _initiatorId, Private = true }; projectEngine.SaveOrUpdate(newProject, true); Participant prt = participantEngine.GetByID(newProject.Responsible); projectEngine.AddToTeam(newProject, prt, true); foreach (var wrapper in project.People.SelectMany(user => _newUsersID.Where(wrapper => user.ID == wrapper.InBasecamp))) { prt = participantEngine.GetByID(wrapper.InProjects); projectEngine.AddToTeam(newProject, prt, true); //check permission var user = project.People.ToList().Find(p => p.ID == wrapper.InBasecamp); if (user != null) { } } _newProjectsID.Add(new ProjectIDWrapper {InBasecamp = project.ID, InProjects = newProject.ID}); } catch(Exception e) { Status.LogError(string.Format(ImportResource.FailedToSaveProject, project.Name), e); LogError(string.Format("project '{0}' failed", project.Name), e); _newProjectsID.RemoveAll(x => x.InBasecamp == project.ID); } } //Select only suceeded projects var projectsToProcess = projects.Where(x => _newProjectsID.Count(y => y.InBasecamp == x.ID) > 0).ToList(); step = 50.0 / projectsToProcess.Count; foreach (var project in projectsToProcess) { Status.LogInfo(string.Format(ImportResource.ImportProjectDataStarted, project.Name)); Status.ProjectProgress += step; var messages = project.RecentMessages; foreach (var message in messages) { SaveMessages(message, project.ID); } var todoLists = project.ToDoLists; foreach (var todoList in todoLists) { SaveTasks(todoList, project.ID); } LogStatus("import files"); SaveFiles(basecampManager, project.Attachments, project.ID); } }
private void SaveUsers(IBaseCamp basecampManager) { var employees = basecampManager.People; var step = 100.0 / employees.Count(); foreach (var person in employees) { try { if (TenantExtra.GetRemainingCountUsers() <= 0) { _importUsersOverLimitAsCollaborators = true; } Status.UserProgress += step; var userID = FindUserByEmail(person.EmailAddress); if (userID.Equals(Guid.Empty)) { var userName = Regex.Replace(person.UserName, @"[!|@|#|$|%|'|+]", ""); var name = userName.Split(' '); var userInfo = new UserInfo { Email = person.EmailAddress, FirstName = name.First(), LastName = name.Count() > 1 ? name.Last() : "", UserName = userName, Status = EmployeeStatus.Active, }; var collaboratorFlag = _importUsersOverLimitAsCollaborators || _importUsersAsCollaborators; if (!UserManagerWrapper.ValidateEmail(userInfo.Email)) throw new Exception("Invalid email"); var newUserInfo = UserManagerWrapper.AddUser(userInfo, UserManagerWrapper.GeneratePassword(), false, !_disableNotifications, collaboratorFlag); _newUsersID.Add(new UserIDWrapper {InBasecamp = person.ID, InProjects = newUserInfo.ID}); //save user avatar const string emptyAvatar = "http://asset0.37img.com/global/default_avatar_v1_4/avatar.gif?r=3"; if (person.AvatarUrl != emptyAvatar) UserPhotoManager.SaveOrUpdatePhoto(newUserInfo.ID, StreamFile(person.AvatarUrl)); } else { _newUsersID.Add(new UserIDWrapper {InBasecamp = person.ID, InProjects = userID}); } } catch(Exception e) { Status.LogError(string.Format(ImportResource.FailedToSaveUser, person.EmailAddress), e); LogError(string.Format("user '{0}' failed", person.EmailAddress), e); _newUsersID.RemoveAll(x => x.InBasecamp == person.ID); } } }
private void SaveProjects(IBaseCamp basecampManager) { var projects = basecampManager.Projects; var step = 50.0 / projects.Count(); var projectEngine = _engineFactory.ProjectEngine; var participantEngine = _engineFactory.ParticipantEngine; if (_projects.Any()) { projects = projects.Where(r => _projects.Any(pr => pr == r.ID)).ToArray(); } foreach (var project in projects) { try { StatusState.StatusLogInfo(string.Format(ImportResource.ImportProjectStarted, project.Name)); StatusState.StatusProjectProgress(step); var newProject = new Project { Status = !project.IsClosed ? ProjectStatus.Open : ProjectStatus.Closed, Title = ReplaceLineSeparator(project.Name), Description = project.Description, Responsible = _initiatorId, Private = true }; projectEngine.SaveOrUpdate(newProject, true); var prt = participantEngine.GetByID(newProject.Responsible); projectEngine.AddToTeam(newProject, prt, true); foreach (var wrapper in project.People.SelectMany(user => _newUsersID.Where(wrapper => user.ID == wrapper.InBasecamp))) { prt = participantEngine.GetByID(wrapper.InProjects); projectEngine.AddToTeam(newProject, prt, true); //check permission var user = project.People.ToList().Find(p => p.ID == wrapper.InBasecamp); if (user != null) { } } _newProjectsID.Add(new ProjectIDWrapper { InBasecamp = project.ID, InProjects = newProject.ID }); } catch (Exception e) { StatusState.StatusLogError(string.Format(ImportResource.FailedToSaveProject, project.Name), e); LogError(string.Format("project '{0}' failed", project.Name), e); _newProjectsID.RemoveAll(x => x.InBasecamp == project.ID); } } //Select only suceeded projects var projectsToProcess = projects.Where(x => _newProjectsID.Count(y => y.InBasecamp == x.ID) > 0).ToList(); step = 50.0 / projectsToProcess.Count; foreach (var project in projectsToProcess) { StatusState.StatusLogInfo(string.Format(ImportResource.ImportProjectDataStarted, project.Name)); StatusState.StatusProjectProgress(step); var messages = project.RecentMessages; foreach (var message in messages) { SaveMessages(message, project.ID); } var todoLists = project.ToDoLists; foreach (var todoList in todoLists) { SaveTasks(todoList, project.ID); } LogStatus("import files"); SaveFiles(basecampManager, project.Attachments, project.ID); } }
private void SaveFiles(IBaseCamp basecampManeger, IEnumerable <IAttachment> attachments, int projectID) { var step = 100.0 / attachments.Count(); StatusState.StatusLogInfo(string.Format(ImportResource.ImportFileStarted, attachments.Count())); //select last version foreach (var attachment in attachments) { StatusState.StatusFileProgress(step); try { var httpWReq = basecampManeger.Service.GetRequest(attachment.DownloadUrl); using (var httpWResp = (HttpWebResponse)httpWReq.GetResponse()) { if (attachment.ByteSize > SetupInfo.MaxUploadSize) { StatusState.StatusLogError(string.Format(ImportResource.FailedSaveFileMaxSizeExided, attachment.Name), new Exception()); continue; } var file = new ASC.Files.Core.File { FolderID = _engineFactory.FileEngine.GetRoot(FindProject(projectID)), Title = attachment.Name, ContentLength = attachment.ByteSize, CreateBy = FindUser(attachment.AuthorID), CreateOn = attachment.CreatedOn.ToUniversalTime(), Comment = ImportResource.CommentImport, }; if (file.Title.LastIndexOf('\\') != -1) { file.Title = file.Title.Substring(file.Title.LastIndexOf('\\') + 1); } file = _engineFactory.FileEngine.SaveFile(file, httpWResp.GetResponseStream()); if ("Message".Equals(attachment.OwnerType, StringComparison.OrdinalIgnoreCase)) { try { var messageId = FindMessage(attachment.OwnerID); _engineFactory.MessageEngine.AttachFile(new Message { ID = messageId }, file.ID, false); //It's not critical } catch (Exception e) { LogError(string.Format("not critical. attaching file '{0}' to message failed", attachment.Name), e); } } if ("Todo".Equals(attachment.OwnerType, StringComparison.OrdinalIgnoreCase)) { try { var taskId = FindTask(attachment.OwnerID); _engineFactory.TaskEngine.AttachFile(new Task { ID = taskId }, file.ID, false); //It's not critical } catch (Exception e) { LogError(string.Format("not critical. attaching file '{0}' to message failed", attachment.Name), e); } } _newFilesID.Add(new FileIDWrapper { InBasecamp = attachment.ID, InProjects = file.ID }); } } catch (Exception e) { try { StatusState.StatusLogError(string.Format(ImportResource.FailedToSaveFile, attachment.Name), e); LogError(string.Format("file '{0}' failed", attachment.Name), e); _newFilesID.RemoveAll(x => x.InBasecamp == attachment.ID); } catch (Exception ex) { LogError(string.Format("file remove after error failed"), ex); } } } }
public static IProject GetInstance(IBaseCamp baseCamp, JObject node) { return new Project(baseCamp, baseCamp.Service, node); }
public static ICompany GetInstance(IBaseCamp camp, JObject node) { return(new Company(camp, camp.Service, node)); }
public static ICategory GetInstance(IBaseCamp camp, XmlNode node) { return new Category(camp, node); }
public static IAttachment GetInstance(IBaseCamp camp, XmlNode node) { return new Attachment(camp, node); }
public static IPerson GetInstance(IBaseCamp camp, JObject node) { return new Person(camp, node); }