private static void CheckBeforeDelete(DataModel.Project dbItem, Project project) { if (project.Id == null) { throw new InconsistencyException ( string.Format(Resources.TextMessages.CantDeleteNewItem, project.GetType().Name) ); } if (dbItem == null) { throw new InconsistencyException ( string.Format(Resources.TextMessages.WasAlreadyDeleted, project.GetType().Name) ); } if (dbItem.Version != project.Version) { throw new InconsistencyException ( string.Format(Resources.TextMessages.ItemWasAlreadyChanged, project.GetType().Name) ); } }
private ProjectDetails toProjectDetails(DataModel.Project project) { var users = new List<string>(); DateTime time = DateTime.MinValue + TimeSpan.FromSeconds(getTime(project)); foreach (var u in project.User) users.Add(u.Name); return new ProjectDetails { Id = project.Id, Name = project.Name, Description = project.Description, Time = time, Users = users }; }
private long getTime(DataModel.Project project) { long time = 0; foreach (var task in project.Task) foreach (var timelog in task.TimeLog) time += timelog.Time; foreach (var p in project.SubProject) time += getTime(p); return time; }
private void removeProject(DataModel.Project project) { foreach (var subproject in new List<DataModel.Project>(project.SubProject)) removeProject(subproject); foreach (var task in new List<DataModel.Task>(project.Task)) removeTask(task.Id); project.User.Clear(); ctx.ProjectSet.Remove(project); }
private DataModel.Project addProject(ProjectDetails details) { var project = new DataModel.Project() { Name = details.Name, Description = details.Description }; foreach (var u in ctx.UserSet.Where(r => details.Users.Contains(r.Name))) { project.User.Add(u); } return project; }
private Project ToProject(DataModel.Project project) { var users = new List<string>(); DateTime time = DateTime.MinValue + TimeSpan.FromSeconds(getTime(project)); foreach (var u in project.User) users.Add(u.Name); var children = new List<ChildProject>(); foreach (var p in project.SubProject) { var child = new ChildProject(); child.Name = p.Name; child.Id = p.Id; children.Add(child); } return new Project { Id = project.Id, Name = project.Name, Time = time, Users = users , Children = children}; }
private void Merge(DataModel.Project dbProject, Project project) { dbProject.Category = _context.Categories.FirstOrDefault(x => x.Code == project.Category.Code); dbProject.CategoryId = project.Category.Id.Value; dbProject.Code = project.Code; dbProject.Description = project.Description; dbProject.DescriptionShort = project.DescriptionShort; dbProject.DisplayName = project.DisplayName; dbProject.PosterDescription = project.PosterDescription; dbProject.PosterUrl = project.PosterUrl; dbProject.ReleaseDate = project.ReleaseDate; dbProject.Version++; Merge(dbProject, project.ExternalUrls); Merge(dbProject, project.GalleryImages); }
private void Merge(DataModel.Project dbProject, IEnumerable <ExternalUrl> externalUrls) { foreach (var item in dbProject.ExternalUrls ?? new List <DataModel.ProjectExternalUrl>()) { var remoteItem = externalUrls?.FirstOrDefault(x => x.Id.HasValue && x.Id == item.ExternalUrlId); if (remoteItem == null) { _context.ExternalUrls.Remove(item.ExternalUrl); } else { item.ExternalUrl.DisplayName = remoteItem.DisplayName; item.ExternalUrl.Url = remoteItem.Url; item.ExternalUrl.Version++; } } foreach (var item in externalUrls?.Where(x => x.Id == null) ?? new List <ExternalUrl>()) { dbProject.ExternalUrls.Add(AbstractionsConverter.ToProjectExternalUrl(item)); } }
private void Merge(DataModel.Project dbProject, IEnumerable <GalleryImage> galleryImages) { foreach (var item in dbProject.GalleryImages ?? new List <DataModel.GalleryImage>()) { var remoteItem = galleryImages?.FirstOrDefault(x => x.Id.HasValue && x.Id == item.Id); if (remoteItem == null) { _context.GalleryImages.Remove(item); } else { item.ExtraUrl = remoteItem.ExtraUrl; item.ImageUrl = remoteItem.ImageUrl; item.Version++; } } foreach (var item in galleryImages?.Where(x => x.Id == null) ?? new List <GalleryImage>()) { dbProject.GalleryImages.Add(AbstractionsConverter.ToGalleryImage(item)); } }
private void CheckBeforeUpdate(DataModel.Project dbItem, Project project) { if (dbItem == null) { throw new InconsistencyException ( string.Format(Resources.TextMessages.WasAlreadyDeleted, project.GetType().Name) ); } if (string.IsNullOrEmpty(project.Code)) { throw new InconsistencyException ( string.Format(Resources.TextMessages.ThePropertyCantBeEmpty, nameof(project.Code)) ); } if (string.IsNullOrEmpty(project.DisplayName)) { throw new InconsistencyException ( string.Format(Resources.TextMessages.ThePropertyCantBeEmpty, nameof(project.DisplayName)) ); } if (dbItem.Version != project.Version) { throw new InconsistencyException ( string.Format(Resources.TextMessages.ItemWasAlreadyChanged, project.GetType().Name) ); } if (dbItem.Code != project.Code && _context.Projects.Any(x => x.Code == project.Code)) { throw new InconsistencyException ( string.Format(Resources.TextMessages.PropertyDuplicate, nameof(project.Code)) ); } foreach (var item in dbItem.ExternalUrls) { var updated = project.ExternalUrls.FirstOrDefault(x => x.Id == item.ExternalUrlId); if (updated == null) { continue; } if (item.ExternalUrl.Version != updated.Version) { throw new InconsistencyException ( string.Format(Resources.TextMessages.ItemWasAlreadyChanged, nameof(updated)) ); } } foreach (var dbGalleryitem in dbItem.GalleryImages) { var updatedGalleryItem = project.GalleryImages?.FirstOrDefault(x => x.Id == dbGalleryitem.Id); if (updatedGalleryItem == null) { continue; } if (dbGalleryitem.Version != updatedGalleryItem.Version) { throw new InconsistencyException ( string.Format(Resources.TextMessages.ItemWasAlreadyChanged, dbGalleryitem.GetType().Name) ); } } foreach (var item in project.ExternalUrls ?? new List <ExternalUrl>()) { if (string.IsNullOrEmpty(item.DisplayName)) { throw new InconsistencyException ( string.Format(Resources.TextMessages.ThePropertyCantBeEmpty, "Display name of the External URL") ); } if (string.IsNullOrEmpty(item.Url)) { throw new InconsistencyException ( string.Format(Resources.TextMessages.ThePropertyCantBeEmpty, "URL of the External URL") ); } } foreach (var item in project.GalleryImages ?? new List <GalleryImage>()) { if (string.IsNullOrEmpty(item.ImageUrl)) { throw new InconsistencyException ( string.Format(Resources.TextMessages.ThePropertyCantBeEmpty, "Image of the Gallery Image") ); } } }