public ChecklistViewModel(ChecklistInstance checklist, List <ChecklistItemInstance> checklistItems, string origin) { if (checklist == null) { return; } Id = checklist.Id; IsPropertyMandatory = checklist.IsPropertyMandatory; IsAvailableDownstream = checklist.IsAvailableDownstream; Image = checklist.Image; Name = checklist.Name; ChecklistItems = checklistItems.Select(c => new ChecklistItemViewModel(c)).ToList(); Origin = origin; Description = checklist.Description; IsArchived = checklist.IsArchived; PortfolioId = checklist.PortfolioId; PropertyDetailsId = checklist.PropertyDetailsId; }
public async Task <ChecklistViewModel> CreateAsync(Guid portfolioId, Guid checklistId, Guid?propertyDetailsId) { var checklist = await Context.Checklists.FirstOrDefaultAsync(c => c.Id == checklistId); if (checklist != null) { var instance = new ChecklistInstance(checklist) { Created = DateTime.Now, PortfolioId = portfolioId, PropertyDetailsId = propertyDetailsId }; await Context.ChecklistInstances.AddAsync(instance); await Context.SaveChangesAsync(); var checklistItems = await Context.ChecklistItems.OrderBy(c => c.Order).AsNoTracking().Where(c => c.ChecklistId == checklist.Id).ToListAsync(); var checklistItemInstances = new List <ChecklistItemInstance>(); foreach (var checklistItem in checklistItems) { var newItem = new ChecklistItemInstance(checklistItem) { Created = DateTime.Now, Id = default(Guid), ChecklistInstanceId = instance.Id }; checklistItemInstances.Add(newItem); } await Context.ChecklistItemInstances.AddRangeAsync(checklistItemInstances); await Context.SaveChangesAsync(); return(new ChecklistViewModel(instance, checklistItemInstances, ChecklistOrigin.User.ToString())); } return(null); }