public ChecklistItemViewModel(ChecklistItemInstance checklistItem)
        {
            if (checklistItem == null)
            {
                return;
            }

            DisplayText = checklistItem.DisplayText;
            Key         = checklistItem.Key;
            IsExpanded  = checklistItem.IsExpanded;
            Template    = checklistItem.Template;
            IsCompleted = checklistItem.IsCompleted;
            Order       = checklistItem.Order;
            Payload     = checklistItem.Payload;
            Id          = checklistItem.Id;
        }
        public async Task <ChecklistItemViewModel> AddAsync(Guid checklistId, ChecklistItemViewModel value)
        {
            var entity = new ChecklistItemInstance
            {
                ChecklistInstanceId = checklistId,
                Created             = DateTime.Now,
                DisplayText         = value.DisplayText,
                Template            = value.Template
            };

            await Context.ChecklistItemInstances.AddAsync(entity);

            await Context.SaveChangesAsync();

            return(new ChecklistItemViewModel(entity));
        }
        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);
        }