コード例 #1
0
        public async Task <IActionResult> OnPostGetIDAsync()
        {
            IFormCollection requestForm = await Request.ReadFormAsync();

            string result       = "";
            string idFormPart   = requestForm["idFromParent"];
            string parentNumber = requestForm["store-parent-number"];

            if (parentNumber.Length == 0)
            {
                return(Ok(result));
            }

            parentNumber = parentNumber.TrimStart(new char[] { '0' });
            bool isOk = int.TryParse(parentNumber, out int num);

            if (!isOk)
            {
                return(Ok(result));
            }

            MtdStore mtdStore = await _context.MtdStore.FirstOrDefaultAsync(x => x.MtdForm == idFormPart& x.Sequence == num);

            if (mtdStore != null)
            {
                result = mtdStore.Id;
            }

            return(Ok(result));
        }
コード例 #2
0
        public async Task <IActionResult> OnPostDeleteAsync()
        {
            IFormCollection requestForm = await Request.ReadFormAsync();

            string   idStore  = requestForm["store-delete-id"];
            MtdStore mtdStore = await _context.MtdStore.FindAsync(idStore);

            if (mtdStore == null)
            {
                return(NotFound());
            }

            WebAppUser webAppUser = await _userHandler.GetUserAsync(HttpContext.User);

            bool isEraser = await _userHandler.IsEraser(webAppUser, mtdStore.MtdForm, mtdStore.Id);

            if (!isEraser)
            {
                return(Ok(403));
            }


            _context.MtdStore.Remove(mtdStore);
            await _context.SaveChangesAsync();

            return(Ok());
        }
コード例 #3
0
 public ApprovalHandler(OrderMakerContext context, string idstore)
 {
     _context      = context;
     idStore       = idstore;
     storeCache    = null;
     approvalCache = null;
 }
コード例 #4
0
        public async Task <IActionResult> OnGet(string idForm, string idStoreParent)
        {
            if (idForm == null)
            {
                return(NotFound());
            }

            var user = await _userHandler.GetUserAsync(HttpContext.User);

            bool isCreator = await _userHandler.IsCreator(user, idForm);

            if (!isCreator)
            {
                return(Forbid());
            }

            MtdForm = await _context.MtdForm.FindAsync(idForm);

            MtdStore mtdStoreParent = await _context.MtdStore.FirstOrDefaultAsync(x => x.Id == idStoreParent);

            MtdStore = new MtdStore {
                MtdForm = MtdForm.Id, MtdFormNavigation = MtdForm, Parent = idStoreParent, ParentNavigation = mtdStoreParent
            };
            return(Page());
        }
コード例 #5
0
        public async Task <IActionResult> OnGetAsync(string id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            MtdStore = await _context.MtdStore.FirstOrDefaultAsync(m => m.Id == id);

            if (MtdStore == null)
            {
                return(NotFound());
            }

            var user = await _userHandler.GetUserAsync(HttpContext.User);

            bool isViewer = await _userHandler.IsViewer(user, MtdStore.MtdForm, MtdStore.Id);

            if (!isViewer)
            {
                return(Forbid());
            }

            return(Page());
        }
コード例 #6
0
        public async Task <bool> IsApproverAsync(WebAppUser user)
        {
            bool isComplete = await IsComplete();

            bool isApprovalForm = await IsApprovalFormAsync();

            if (!isApprovalForm || isComplete)
            {
                return(false);
            }

            MtdApprovalStage mtdApprovalStage = await GetCurrentStageAsync();

            MtdStore store = await GetStoreAsync();

            bool forOwner = false;

            if (store.MtdStoreOwner != null)
            {
                MtdApprovalStage firstStage = await GetFirstStageAsync();

                if (firstStage != null)
                {
                    forOwner = (store.MtdStoreOwner.UserId.Equals(user.Id) && mtdApprovalStage.Id.Equals(firstStage.Id));
                }
            }

            if (mtdApprovalStage != null && (mtdApprovalStage.UserId.Equals(user.Id) || forOwner))
            {
                return(true);
            }

            return(false);
        }
コード例 #7
0
        public async Task <string> GetOwnerID()
        {
            MtdStore mtdStore = await GetStoreAsync();

            if (mtdStore.MtdStoreOwner == null)
            {
                return(string.Empty);
            }
            return(mtdStore.MtdStoreOwner.UserId);
        }
コード例 #8
0
        public async Task <bool> IsComplete()
        {
            bool     result   = false;
            MtdStore mtdStore = await GetStoreAsync();

            if (mtdStore.MtdStoreApproval != null && mtdStore.MtdStoreApproval.Complete == 1)
            {
                result = true;
            }
            return(result);
        }
コード例 #9
0
        public async Task <string> GetStoreID()
        {
            string   result   = string.Empty;
            MtdStore mtdStore = await GetStoreAsync();

            if (mtdStore != null)
            {
                result = mtdStore.Id;
            }
            return(result);
        }
コード例 #10
0
        public async Task <int> GetResultAsync()
        {
            MtdStore mtdStore = await GetStoreAsync();

            if (mtdStore.MtdStoreApproval != null)
            {
                return(mtdStore.MtdStoreApproval.Result);
            }

            return(0);
        }
コード例 #11
0
        public async Task <OutFlow> GetDataForNumberAsync(Incomer incomer)
        {
            MtdStore mtdStore = await queryMtdStore.Where(x => x.MtdForm == incomer.IdForm& x.Sequence.ToString().Equals(incomer.SearchNumber)).FirstOrDefaultAsync();

            return(new OutFlow
            {
                Count = mtdStore != null ? 1 : 0,
                MtdStores = mtdStore != null ? new List <MtdStore> {
                    mtdStore
                } : new List <MtdStore>()
            });
        }
コード例 #12
0
        private async Task <MtdApproval> GetApproval()
        {
            if (approvalCache != null)
            {
                return(approvalCache);
            }
            MtdStore mtdStore = await GetStoreAsync();

            return(await _context.MtdApproval.AsNoTracking()
                   .Include(x => x.MtdApprovalStage)
                   .Where(x => x.MtdForm == mtdStore.MtdForm)
                   .FirstOrDefaultAsync());
        }
コード例 #13
0
ファイル: Form.cs プロジェクト: nakinnubis/OrderMaker
        public async Task <IViewComponentResult> InvokeAsync(MtdStore store, FormType type = FormType.Details)
        {
            if (store == null)
            {
                return(View());
            }

            WebAppUser webAppUser = await _userHandler.GetUserAsync(HttpContext.User);

            if (type == FormType.Create)
            {
                store.MtdFormNavigation.MtdFormHeader = await _context.MtdFormHeader.FindAsync(store.MtdForm);

                store.MtdFormNavigation.ParentNavigation = await _context.MtdForm.FindAsync(store.MtdFormNavigation.Parent);

                List <MtdFormPart>  mtdFormParts = new List <MtdFormPart>();
                IList <MtdFormPart> parts        = await GetPartsAsync(store.MtdForm);

                foreach (MtdFormPart formPart in parts)
                {
                    bool isCreator = await _userHandler.IsCreatorPartAsync(webAppUser, formPart.Id);

                    if (isCreator)
                    {
                        mtdFormParts.Add(formPart);
                    }
                }

                IList <MtdFormPartField> mtdFormPartFields = await GetFieldsAsync(mtdFormParts);

                DataSet dataSetForCreate = new DataSet()
                {
                    Store  = store,
                    Parts  = mtdFormParts,
                    Fields = mtdFormPartFields,
                    Stack  = new List <MtdStoreStack>()
                };

                return(View("Create", dataSetForCreate));
            }

            DataContainer dataContainer = new DataContainer
            {
                Owner  = await CreateDataSetAsync(store, type),
                Parent = await CreateDataSetAsync(store.ParentNavigation)
            };

            return(View(type.ToString(), dataContainer));
        }
コード例 #14
0
        private async Task <MtdStore> GetStoreAsync()
        {
            if (storeCache != null)
            {
                return(storeCache);
            }
            storeCache = await _context.MtdStore.AsNoTracking()
                         .Include(x => x.MtdFormNavigation)
                         .Include(x => x.MtdStoreApproval)
                         .Include(x => x.MtdStoreOwner)
                         .Where(x => x.Id == idStore)
                         .FirstOrDefaultAsync();

            return(storeCache);
        }
コード例 #15
0
        public async Task <MtdApprovalStage> GetCurrentStageAsync()
        {
            MtdApproval approval = await GetApproval();

            if (approval == null)
            {
                return(null);
            }

            MtdStore mtdStore = await GetStoreAsync();

            if (mtdStore.MtdStoreApproval == null)
            {
                return(await GetFirstStageAsync());
            }
            return(approval.MtdApprovalStage.Where(x => x.Id == mtdStore.MtdStoreApproval.MtdApproveStage).FirstOrDefault());
        }
コード例 #16
0
        public async Task <List <string> > GetBlockedPartsIds()
        {
            MtdStore mtdStore = await GetStoreAsync();

            List <string> ids = new List <string>();

            if (mtdStore.MtdStoreApproval != null)
            {
                ids = mtdStore.MtdStoreApproval.PartsApproved.Split("&").ToList();
                if (ids.Any())
                {
                    ids.RemoveAt(ids.Count - 1);
                }
            }

            return(ids);
        }
コード例 #17
0
        public async Task <IActionResult> OnPostSaveAsync()
        {
            IFormCollection requestForm = await Request.ReadFormAsync();

            string Id = requestForm["idStore"];

            MtdStore mtdStore = await _context.MtdStore.FirstOrDefaultAsync(x => x.Id == Id);

            if (mtdStore == null)
            {
                return(NotFound());
            }

            WebAppUser webAppUser = await _userHandler.GetUserAsync(HttpContext.User);

            bool isEditor = await _userHandler.IsEditor(webAppUser, mtdStore.MtdForm, mtdStore.Id);

            ApprovalHandler approvalHandler = new ApprovalHandler(_context, mtdStore.Id);
            ApprovalStatus  approvalStatus  = await approvalHandler.GetStatusAsync(webAppUser);

            if (!isEditor || approvalStatus == ApprovalStatus.Rejected || approvalStatus == ApprovalStatus.Waiting)
            {
                return(Ok(403));
            }

            MtdLogDocument mtdLog = new MtdLogDocument
            {
                MtdStore = mtdStore.Id,
                TimeCh   = DateTime.Now,
                UserId   = webAppUser.Id,
                UserName = webAppUser.Title
            };


            OutData outData = await CreateDataAsync(Id, webAppUser, TypeAction.Edit, requestForm);

            List <MtdStoreStack> stackNew = outData.MtdStoreStacks;


            IList <MtdStoreStack> stackOld = await _context.MtdStoreStack
                                             .Include(m => m.MtdStoreStackText)
                                             .Include(m => m.MtdStoreStackDecimal)
                                             .Include(m => m.MtdStoreStackFile)
                                             .Include(m => m.MtdStoreStackDate)
                                             .Include(m => m.MtdStoreStackInt)
                                             .Include(m => m.MtdStoreLink)
                                             .Where(x => x.MtdStore == Id).ToListAsync();

            foreach (MtdStoreStack stack in stackOld)
            {
                MtdStoreStack stackForField = stackNew.SingleOrDefault(x => x.MtdFormPartField == stack.MtdFormPartField);
                if (stackForField != null)
                {
                    stack.MtdStoreStackText    = stackForField.MtdStoreStackText;
                    stack.MtdStoreLink         = stackForField.MtdStoreLink;
                    stack.MtdStoreStackDate    = stackForField.MtdStoreStackDate;
                    stack.MtdStoreStackDecimal = stackForField.MtdStoreStackDecimal;
                    stack.MtdStoreStackFile    = stackForField.MtdStoreStackFile;
                    stack.MtdStoreStackInt     = stackForField.MtdStoreStackInt;
                }
            }


            try
            {
                if (stackNew.Count > 0)
                {
                    int count = await _context.MtdStoreLink.Where(x => x.MtdStore == Id).CountAsync();

                    if (count > 0)
                    {
                        string titleText             = outData.MtdStoreStacks.FirstOrDefault(x => x.MtdFormPartField == outData.MtdFormPartField.Id).MtdStoreStackText.Register;
                        IList <MtdStoreLink> linkIds = await _context.MtdStoreLink.Where(x => x.MtdStore == Id).Select(x => new MtdStoreLink {
                            Id = x.Id, MtdStore = x.MtdStore, Register = titleText
                        }).ToListAsync();

                        _context.MtdStoreLink.UpdateRange(linkIds);
                    }

                    _context.MtdStoreStack.UpdateRange(stackOld);


                    List <MtdStoreStack> stackNewOnly = stackNew.Where(x => !stackOld.Select(f => f.MtdFormPartField).Contains(x.MtdFormPartField)).ToList();

                    if (stackNewOnly.Any())
                    {
                        await _context.MtdStoreStack.AddRangeAsync(stackNewOnly);
                    }

                    _context.MtdLogDocument.Add(mtdLog);
                    await _context.SaveChangesAsync();
                }
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!MtdStoreExists(Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(Ok());
        }
コード例 #18
0
ファイル: Form.cs プロジェクト: nakinnubis/OrderMaker
        private async Task <DataSet> CreateDataSetAsync(MtdStore store, FormType type = FormType.Details)
        {
            if (store == null)
            {
                return(null);
            }
            WebAppUser webAppUser = await _userHandler.GetUserAsync(HttpContext.User);

            List <MtdFormPart>  mtdFormParts = new List <MtdFormPart>();
            IList <MtdFormPart> parts        = await GetPartsAsync(store.MtdForm);

            bool isReviewer = await _userHandler.IsReviewer(webAppUser, store.MtdForm);

            ApprovalHandler approvalHandler = new ApprovalHandler(_context, store.Id);
            List <string>   blockedParts    = new List <string>();

            if (!isReviewer)
            {
                blockedParts = await approvalHandler.GetBlockedPartsIds();
            }

            foreach (MtdFormPart formPart in parts)
            {
                if (type == FormType.Edit)
                {
                    bool isEditor = await _userHandler.IsEditorPartAsync(webAppUser, formPart.Id);

                    if (isEditor && !blockedParts.Contains(formPart.Id))
                    {
                        mtdFormParts.Add(formPart);
                    }
                }
                else
                {
                    bool isViewer = await _userHandler.IsViewerPartAsync(webAppUser, formPart.Id);

                    if (isViewer)
                    {
                        mtdFormParts.Add(formPart);
                    }
                }
            }

            IList <MtdFormPartField> mtdFormPartFields = await GetFieldsAsync(mtdFormParts);

            var mtdStore = await _context.MtdStore
                           .Include(m => m.ParentNavigation)
                           .Include(m => m.MtdFormNavigation)
                           .ThenInclude(m => m.MtdFormHeader)
                           .Include(m => m.MtdFormNavigation)
                           .ThenInclude(m => m.ParentNavigation)
                           .FirstOrDefaultAsync(m => m.Id == store.Id);

            IList <long> ids = await _context.MtdStoreStack.Where(x => x.MtdStore == mtdStore.Id).Select(x => x.Id).ToListAsync();

            IList <MtdStoreStack> stack = await _context.MtdStoreStack
                                          .Include(m => m.MtdStoreStackText)
                                          .Include(m => m.MtdStoreStackDecimal)
                                          .Include(m => m.MtdStoreStackFile)
                                          .Include(m => m.MtdStoreStackDate)
                                          .Include(m => m.MtdStoreStackInt)
                                          .Include(m => m.MtdStoreLink)
                                          .Where(x => ids.Contains(x.Id))
                                          .ToListAsync();


            DataSet result = new DataSet()
            {
                Store  = mtdStore,
                Parts  = mtdFormParts,
                Fields = mtdFormPartFields,
                Stack  = stack,
            };

            return(result);
        }
コード例 #19
0
        public async Task <IViewComponentResult> InvokeAsync(string idForm)
        {
            List <DisplayData> displayDatas = new List <DisplayData>();
            var user = await _userHandler.GetUserAsync(HttpContext.User);

            List <string> partIds = await _userHandler.GetAllowPartsForView(user, idForm);

            MtdFilter filter = await _context.MtdFilter.FirstOrDefaultAsync(x => x.IdUser == user.Id && x.MtdForm == idForm);

            if (filter != null)
            {
                List <MtdFilterField> mtdFilterFields = await _context.MtdFilterField
                                                        .Include(x => x.MtdTermNavigation)
                                                        .Include(m => m.MtdFormPartFieldNavigation)
                                                        .Where(x => x.MtdFilter == filter.Id)
                                                        .ToListAsync();

                foreach (var field in mtdFilterFields)
                {
                    DisplayData displayData = new DisplayData
                    {
                        Id     = field.Id,
                        Header = $"{field.MtdFormPartFieldNavigation.Name} ({field.MtdTermNavigation.Sign})",
                        Value  = "",
                        Type   = "-field"
                    };

                    if (field.MtdFormPartFieldNavigation.MtdSysType != 11)
                    {
                        displayData.Value = field.Value;
                    }
                    else
                    {
                        MtdStore mtdStore = await _context.MtdStore.FirstOrDefaultAsync(x => x.Id == field.Value);

                        if (mtdStore != null)
                        {
                            var fieldForList = await _context.MtdFormPartField.Include(m => m.MtdFormPartNavigation)
                                               .Where(x => x.MtdFormPartNavigation.MtdForm == mtdStore.MtdForm & x.MtdSysType == 1)
                                               .OrderBy(o => o.MtdFormPartNavigation.Sequence).ThenBy(o => o.Sequence).FirstOrDefaultAsync();

                            if (fieldForList != null)
                            {
                                IList <long> ids = await _context.MtdStoreStack.Where(x => x.MtdStore == mtdStore.Id& x.MtdFormPartField == fieldForList.Id).Select(x => x.Id).ToListAsync();

                                MtdStoreStackText data = await _context.MtdStoreStackText.FirstOrDefaultAsync(x => ids.Contains(x.Id));

                                displayData.Value = data.Register;
                            }
                        }
                    }

                    displayDatas.Add(displayData);
                }

                MtdFilterDate mtdFilterDate = await _context.MtdFilterDate.FindAsync(filter.Id);

                if (mtdFilterDate != null)
                {
                    DisplayData displayDate = new DisplayData()
                    {
                        Id     = filter.Id,
                        Header = "Period",
                        Value  = $"{mtdFilterDate.DateStart.ToShortDateString()} {mtdFilterDate.DateEnd.ToShortDateString()}",
                        Type   = "-date"
                    };
                    displayDatas.Add(displayDate);
                }

                IList <MtdFilterScript> scripts = await _context.MtdFilterScript.Where(x => x.MtdFilter == filter.Id& x.Apply == 1).ToListAsync();

                if (scripts != null && scripts.Count > 0)
                {
                    foreach (var fs in scripts)
                    {
                        DisplayData displayDate = new DisplayData()
                        {
                            Id     = fs.Id,
                            Header = "Custom filter",
                            Value  = fs.Name,
                            Type   = "-script"
                        };
                        displayDatas.Add(displayDate);
                    }
                }
            }

            DisplayModelView displayModelView = new DisplayModelView
            {
                IdForm       = idForm,
                IdFilter     = filter == null ? -1 : filter.Id,
                DisplayDatas = displayDatas
            };

            return(View("Default", displayModelView));
        }
コード例 #20
0
        public async Task <IActionResult> OnPostCreateAsync()
        {
            IFormCollection requestForm = await Request.ReadFormAsync();

            string idForm       = requestForm["idForm"];
            string idFormParent = requestForm["store-parent-id"];

            WebAppUser webAppUser = await _userHandler.GetUserAsync(HttpContext.User);

            bool isCreator = await _userHandler.IsCreator(webAppUser, idForm);

            if (!isCreator)
            {
                return(Ok(403));
            }

            await _context.Database.BeginTransactionAsync();

            int sequence;
            var forms = await _context.MtdStore.Where(x => x.MtdForm == idForm).ToListAsync();

            if (forms != null && forms.Count > 0)
            {
                sequence = forms.Max(x => x.Sequence);
            }
            else
            {
                sequence = 0;
            }
            sequence++;

            MtdStore mtdStore = new MtdStore {
                Id = Guid.NewGuid().ToString(), MtdForm = idForm, Sequence = sequence, Parent = idFormParent.Length > 0 ? idFormParent : null
            };

            await _context.MtdStore.AddAsync(mtdStore);

            await _context.SaveChangesAsync();

            MtdLogDocument mtdLog = new MtdLogDocument
            {
                MtdStore = mtdStore.Id,
                TimeCh   = mtdStore.Timecr,
                UserId   = webAppUser.Id,
                UserName = webAppUser.Title
            };

            mtdStore.MtdStoreOwner = new MtdStoreOwner
            {
                UserId   = webAppUser.Id,
                UserName = webAppUser.Title,
            };


            await _context.MtdLogDocument.AddAsync(mtdLog);

            OutData outParam = await CreateDataAsync(mtdStore.Id, webAppUser, TypeAction.Create, requestForm);

            List <MtdStoreStack> stackNew = outParam.MtdStoreStacks;
            await _context.MtdStoreStack.AddRangeAsync(stackNew);

            await _context.SaveChangesAsync();

            _context.Database.CommitTransaction();

            return(Ok());
        }
コード例 #21
0
        public async Task <bool> ActionReject(bool complete, int idStage, WebAppUser webAppUser)
        {
            MtdStore mtdStore = await GetStoreAsync();

            if (mtdStore.MtdStoreApproval != null && mtdStore.MtdStoreApproval.Complete == 1)
            {
                return(false);
            }

            MtdApproval mtdApproval = await GetApproval();

            MtdApprovalStage currentStage = await GetCurrentStageAsync();

            MtdApprovalStage prevStage;

            if (!complete)
            {
                prevStage = mtdApproval.MtdApprovalStage.Where(x => x.Id == idStage).FirstOrDefault();
            }
            else
            {
                prevStage = await GetCurrentStageAsync();
            }

            if (prevStage == null)
            {
                return(false);
            }

            var allStages = await GetStagesAsync();

            var blockPartsStage = allStages.Where(x => x.Stage < prevStage.Stage).FirstOrDefault();

            MtdStoreApproval storeApproval = new MtdStoreApproval
            {
                Id = mtdStore.Id,
                MtdApproveStage = prevStage.Id,
                PartsApproved   = blockPartsStage == null ? "&" : blockPartsStage.BlockParts,
                Complete        = complete ? (sbyte)1 : (sbyte)0,
                Result          = -1,
            };

            if (mtdStore.MtdStoreApproval == null)
            {
                await _context.MtdStoreApproval.AddAsync(storeApproval);
            }
            else
            {
                try
                {
                    _context.MtdStoreApproval.Update(storeApproval);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            MtdLogApproval mtdLogApproval = new MtdLogApproval()
            {
                MtdStore = mtdStore.Id,
                Result   = -1,
                Stage    = currentStage.Stage,
                Timecr   = DateTime.Now,
                UserId   = webAppUser.Id
            };

            await _context.MtdLogApproval.AddAsync(mtdLogApproval);



            try
            {
                await _context.SaveChangesAsync();
            }
            catch
            {
                return(false);
            }

            return(true);
        }
コード例 #22
0
        public async Task <bool> ActionApprove(WebAppUser webAppUser)
        {
            MtdStore mtdStore = await GetStoreAsync();

            if (mtdStore.MtdStoreApproval != null && mtdStore.MtdStoreApproval.Complete == 1)
            {
                return(false);
            }

            MtdApprovalStage currentStage = await GetCurrentStageAsync();

            MtdApprovalStage nextStage = await GetNextStageAsync();

            sbyte complete = 0;

            if (nextStage == null)
            {
                complete = 1; nextStage = await GetLastStageAsync();
            }
            ;

            MtdStoreApproval storeApproval = new MtdStoreApproval
            {
                Id = mtdStore.Id,
                MtdApproveStage = nextStage.Id,
                PartsApproved   = currentStage.BlockParts,
                Complete        = complete,
                Result          = 1,
            };

            if (mtdStore.MtdStoreApproval == null)
            {
                await _context.MtdStoreApproval.AddAsync(storeApproval);
            }
            else
            {
                _context.MtdStoreApproval.Update(storeApproval);
            }

            MtdLogApproval mtdLogApproval = new MtdLogApproval()
            {
                MtdStore = mtdStore.Id,
                Result   = 1,
                Stage    = currentStage.Id,
                Timecr   = DateTime.Now,
                UserId   = webAppUser.Id
            };

            await _context.MtdLogApproval.AddAsync(mtdLogApproval);

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                throw ex.InnerException;
            }

            return(true);
        }
コード例 #23
0
        public async Task <MtdForm> GetFormAsync()
        {
            MtdStore mtdStore = await GetStoreAsync();

            return(mtdStore.MtdFormNavigation);
        }
コード例 #24
0
 public void ClearCache()
 {
     approvalCache = null;
     storeCache    = null;
 }
コード例 #25
0
        private async void CloneStore(string idStore)
        {
            var q = from n in _context.MtdStoreStack.Where(x => x.MtdStore == idStore)
                    group n by n.MtdFormPartField into g
                    select new { idField = g.Key, idStack = g.FirstOrDefault(x => x.Id == g.Max(m => m.Id)).Id };

            List <long> ids = await q.Select(x => x.idStack).ToListAsync();


            IList <MtdStoreStack> stack = await _context.MtdStoreStack
                                          .Include(x => x.MtdStoreStackDate)
                                          .Include(x => x.MtdStoreStackText)
                                          .Include(x => x.MtdStoreStackInt)
                                          .Include(x => x.MtdStoreStackDecimal)
                                          .Include(x => x.MtdStoreStackFile)
                                          .Include(x => x.MtdStoreLink)
                                          .Where(x => ids.Contains(x.Id))
                                          .ToListAsync();

            string idForm = await _context.MtdStore.Where(s => s.Id == idStore).Select(x => x.MtdForm).FirstOrDefaultAsync();

            int maxSeq = await _context.MtdStore.Where(x => x.MtdForm == idForm).MaxAsync(s => s.Sequence);

            maxSeq++;

            MtdStore mtdStore = new MtdStore()
            {
                Sequence = maxSeq,
                MtdForm  = idForm
            };


            foreach (MtdStoreStack storeStack in stack)
            {
                MtdStoreStack newStack = new MtdStoreStack()
                {
                    MtdStore          = storeStack.MtdStore,
                    MtdFormPartField  = storeStack.MtdFormPartField,
                    MtdStoreStackDate = storeStack.MtdStoreStackDate != null ? new MtdStoreStackDate {
                        Register = storeStack.MtdStoreStackDate.Register
                    } : null,
                    MtdStoreStackText = storeStack.MtdStoreStackText != null ? new MtdStoreStackText {
                        Register = storeStack.MtdStoreStackText.Register
                    } : null,
                    MtdStoreStackInt = storeStack.MtdStoreStackInt != null ? new MtdStoreStackInt {
                        Register = storeStack.MtdStoreStackInt.Register
                    } : null,
                    MtdStoreStackDecimal = storeStack.MtdStoreStackDecimal != null ? new MtdStoreStackDecimal {
                        Register = storeStack.MtdStoreStackDecimal.Register
                    } : null,

                    MtdStoreStackFile = storeStack.MtdStoreStackFile != null ? new MtdStoreStackFile
                    {
                        Register = storeStack.MtdStoreStackFile.Register,
                        FileName = storeStack.MtdStoreStackFile.FileName,
                        FileSize = storeStack.MtdStoreStackFile.FileSize,
                        FileType = storeStack.MtdStoreStackFile.FileType
                    } : null,

                    MtdStoreLink = storeStack.MtdStoreLink,
                };

                mtdStore.MtdStoreStack.Add(newStack);
            }

            _context.MtdStore.Add(mtdStore);
            await _context.SaveChangesAsync();
        }