Beispiel #1
0
        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);
        }