Exemple #1
0
        public async Task <IViewComponentResult> InvokeAsync(string idForm)
        {
            var user = await _userManager.GetUserAsync(HttpContext.User);

            bool isExists = await _context.MtdFilter.Where(x => x.IdUser == user.Id).AnyAsync();

            if (!isExists)
            {
                MtdFilter mtdFilter = new MtdFilter
                {
                    IdUser       = user.Id,
                    MtdForm      = idForm,
                    Page         = 1,
                    PageSize     = 10,
                    SearchNumber = "",
                    SearchText   = ""
                };
                await _context.MtdFilter.AddAsync(mtdFilter);

                await _context.SaveChangesAsync();
            }

            PlaceModelView model = new PlaceModelView {
                IdForm = idForm
            };

            return(View("Default", model));
        }
Exemple #2
0
        public async Task <IViewComponentResult> InvokeAsync(string idForm)
        {
            var user = await _userManager.GetUserAsync(HttpContext.User);

            var mtdFormList = await ApprovalHandler.GetWaitStoreIds(_context, user, idForm);

            int pending = mtdFormList.Count();

            string    searchText = "";
            bool      whiteList  = false;
            MtdFilter filter     = await _context.MtdFilter.FirstOrDefaultAsync(x => x.IdUser == user.Id && x.MtdForm == idForm);

            if (filter != null)
            {
                searchText = filter.SearchText;
                whiteList  = filter.WaitList == 0 ? false : true;
            }

            HeaderModelView headerModelView = new HeaderModelView
            {
                IdForm         = idForm,
                SearchText     = searchText,
                WaitList       = whiteList,
                Pending        = pending,
                IsApprovalForm = await ApprovalHandler.IsApprovalFormAsync(_context, idForm)
            };

            return(View("Default", headerModelView));
        }
Exemple #3
0
        public async Task <IActionResult> PostPageSize(string idForm, int number)
        {
            int temp = number;

            if (temp > 50)
            {
                temp = 50;
            }
            WebAppUser user = await _userManager.GetUserAsync(User);

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

            if (filter == null)
            {
                filter = new MtdFilter {
                    SearchNumber = "", SearchText = ""
                };
                await _context.MtdFilter.AddAsync(filter);

                await _context.SaveChangesAsync();
            }

            filter.PageSize = number;
            _context.MtdFilter.Update(filter);
            await _context.SaveChangesAsync();

            return(Ok());
        }
Exemple #4
0
        public async Task <TypeQuery> GetTypeQueryAsync()
        {
            TypeQuery typeQuery   = TypeQuery.empty;
            bool      filterField = false;

            MtdFilter mtdFilter = await GetFilterAsync();

            if (mtdFilter != null)
            {
                filterField = await _context.MtdFilterField.Where(x => x.MtdFilter == mtdFilter.Id).AnyAsync();

                if (mtdFilter.SearchNumber != "")
                {
                    typeQuery = TypeQuery.number;
                }
                if (mtdFilter.SearchNumber == "" && mtdFilter.SearchText != "" && !filterField)
                {
                    typeQuery = TypeQuery.text;
                }
                if (mtdFilter.SearchNumber == "" && mtdFilter.SearchText == "" && filterField)
                {
                    typeQuery = TypeQuery.field;
                }
                if (mtdFilter.SearchNumber == "" && mtdFilter.SearchText != "" && filterField)
                {
                    typeQuery = TypeQuery.textField;
                }
            }

            return(typeQuery);
        }
Exemple #5
0
        public async Task <Incomer> GetIncomerDataAsync()
        {
            MtdFilter mtdFilter = await GetFilterAsync();

            Incomer ps = new Incomer
            {
                IdForm         = IdForm,
                SearchNumber   = "",
                SearchText     = "",
                Page           = 1,
                PageSize       = 10,
                FieldForColumn = await GetFieldsAsync(),
                WaitList       = 0,
            };

            if (mtdFilter != null)
            {
                ps.IdForm         = IdForm;
                ps.SearchText     = mtdFilter.SearchText;
                ps.SearchNumber   = mtdFilter.SearchNumber;
                ps.PageSize       = mtdFilter.PageSize;
                ps.Page           = mtdFilter.Page;
                ps.FieldForFilter = await GetAdvancedAsync();

                ps.WaitList = mtdFilter.WaitList;
            }

            return(ps);
        }
Exemple #6
0
        public async Task <IActionResult> PostWaitListSetAsync()
        {
            IFormCollection requestForm = await Request.ReadFormAsync();

            string     idForm = requestForm["id-form-waitlist"];
            WebAppUser user   = await _userManager.GetUserAsync(HttpContext.User);

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

            if (mtdFilter == null)
            {
                mtdFilter = new MtdFilter
                {
                    IdUser       = user.Id,
                    MtdForm      = idForm,
                    PageSize     = 10,
                    SearchText   = "",
                    SearchNumber = "",
                    Page         = 1,
                    WaitList     = 1,
                };
                await _context.MtdFilter.AddAsync(mtdFilter);

                await _context.SaveChangesAsync();

                return(Ok());
            }

            mtdFilter.WaitList = mtdFilter.WaitList == 0 ? 1 : 0;
            _context.MtdFilter.Update(mtdFilter);
            await _context.SaveChangesAsync();

            return(Ok());
        }
Exemple #7
0
        public async Task <IList <MtdFormPartField> > GetFieldsAsync()
        {
            IList <MtdFormPartField> result;

            MtdFilter mtdFilter = await GetFilterAsync();

            if (mtdFilter != null && mtdFilter.MtdFilterColumn != null && mtdFilter.MtdFilterColumn.Count > 0)
            {
                List <string>            fIds       = mtdFilter.MtdFilterColumn.Select(x => x.MtdFormPartField).ToList();
                IList <MtdFormPartField> tempFields = await _context.MtdFormPartField.Where(x => fIds.Contains(x.Id)).ToListAsync();

                result = (from s in tempFields
                          join sa in mtdFilter.MtdFilterColumn on s.Id equals sa.MtdFormPartField
                          orderby sa.Sequence
                          select s).ToList();
            }
            else
            {
                result = await _context.MtdFormPartField
                         .Include(m => m.MtdFormPartNavigation)
                         .Where(x => x.MtdFormPartNavigation.MtdForm == IdForm & x.MtdSysType == 1)
                         .OrderBy(s => s.MtdFormPartNavigation.Sequence).ThenBy(s => s.Sequence)
                         .Take(3)
                         .ToListAsync();
            }

            return(result);
        }
Exemple #8
0
        public async Task <IList <MtdFilterField> > GetAdvancedAsync()
        {
            IList <MtdFilterField> result = null;

            MtdFilter mtdFilter = await GetFilterAsync();

            if (mtdFilter != null)
            {
                result = await _context.MtdFilterField.Include(m => m.MtdFormPartFieldNavigation).Where(x => x.MtdFilter == mtdFilter.Id).ToListAsync();
            }

            return(result);
        }
        public async Task <IActionResult> OnGetAsync(string searchText)
        {
            WebAppUser user = await _userHandler.GetUserAsync(HttpContext.User);

            List <string> formIds = await _userHandler.GetFormIdsAsync(user, RightsType.View, RightsType.ViewGroup, RightsType.ViewOwn);

            List <MtdForm> forms = await _context.MtdForm.Where(x => formIds.Contains(x.Id)).ToListAsync();

            foreach (var form in forms)
            {
                bool isExists = await _context.MtdFilter.Where(x => x.MtdForm == form.Id && x.IdUser == user.Id).AnyAsync();

                if (!isExists)
                {
                    MtdFilter mtdFilter = new MtdFilter
                    {
                        MtdForm      = form.Id,
                        IdUser       = user.Id,
                        Page         = 1,
                        PageSize     = 10,
                        SearchText   = "",
                        ShowDate     = 1,
                        WaitList     = 0,
                        SearchNumber = "",
                        ShowNumber   = 1
                    };

                    await _context.MtdFilter.AddAsync(mtdFilter);

                    await _context.SaveChangesAsync();
                }
            }

            IQueryable <MtdForm> query = _context.MtdForm
                                         .Include(x => x.MtdCategoryNavigation)
                                         .Include(x => x.MtdFormHeader)
                                         .Include(x => x.MtdFormDesk)
                                         .Where(x => formIds.Contains(x.Id));

            if (searchText != null)
            {
                query      = query.Where(x => x.Name.Contains(searchText));
                SearchText = searchText;
            }


            Forms = await query.ToListAsync();

            return(Page());
        }
Exemple #10
0
        public async Task <IActionResult> PostExportAsync()
        {
            var data = Request.Form["InputFormForExport"];

            if (data.FirstOrDefault() == null || data.FirstOrDefault().Equals(string.Empty))
            {
                return(NotFound());
            }
            string idForm = data.FirstOrDefault();

            var user = await _userHandler.GetUserAsync(User);

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

            FilterHandler handlerFilter = new FilterHandler(_context, idForm, user, _userHandler);
            MtdFilter     mtdFilter     = await handlerFilter.GetFilterAsync();

            if (mtdFilter == null)
            {
                return(NotFound());
            }
            Incomer incomer = await handlerFilter.GetIncomerDataAsync();

            TypeQuery typeQuery = await handlerFilter.GetTypeQueryAsync();

            incomer.PageSize = 1000;

            OutFlow outFlow = await handlerFilter.GetStackFlowAsync(incomer, typeQuery);

            IList <MtdStore> mtdStore = outFlow.MtdStores;

            IList <string> storeIds = mtdStore.Select(s => s.Id).ToList();
            IList <string> fieldIds = incomer.FieldForColumn.Select(x => x.Id).ToList();

            IList <string> allowFiieldIds = await _context.MtdFormPartField.Where(x => partIds.Contains(x.MtdFormPart)).Select(x => x.Id).ToListAsync();

            fieldIds = allowFiieldIds.Where(x => fieldIds.Contains(x)).ToList();

            StackHandler          handlerStack  = new StackHandler(_context);
            IList <MtdStoreStack> mtdStoreStack = await handlerStack.GetStackAsync(storeIds, fieldIds);

            IList <MtdFormPartField> columns = incomer.FieldForColumn.Where(x => fieldIds.Contains(x.Id)).ToList();

            IWorkbook workbook = CreateWorkbook(mtdStore, columns, mtdStoreStack);

            workbook.WriteExcelToResponse(HttpContext, "OrderMakerList.xlsx");

            return(Ok());
        }
Exemple #11
0
        public async Task <IActionResult> PostPageMove()
        {
            /* number
             * 1 -  First Page; 2 - back; 3 - forward;
             */
            IFormCollection requestForm = await Request.ReadFormAsync();

            string idForm    = requestForm["formId"];
            string formValue = requestForm["formValue"];
            int    number    = int.Parse(formValue);

            WebAppUser user = await _userManager.GetUserAsync(User);

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

            if (filter == null)
            {
                filter = new MtdFilter {
                    SearchNumber = "", SearchText = ""
                };
                await _context.MtdFilter.AddAsync(filter);

                await _context.SaveChangesAsync();
            }

            int page = filter.Page;

            switch (number)
            {
            case 2: { if (page > 1)
                      {
                          page--;
                      }
                      break; }

            case 3: { page++; break; }

            default: { page = 1; break; }
            }
            ;

            filter.Page = page < 0 ? page = 1 : page;

            _context.MtdFilter.Update(filter);
            await _context.SaveChangesAsync();

            return(Ok());
        }
Exemple #12
0
        public async Task <MtdFilter> GetFilterAsync()
        {
            if (register == null)
            {
                register = await _context.MtdFilter
                           .Include(x => x.MtdFilterDate)
                           .Include(m => m.MtdFilterColumn)
                           .FirstOrDefaultAsync(x => x.IdUser == _user.Id && x.MtdForm == IdForm);

                if (register != null && register.MtdFilterDate != null)
                {
                    queryMtdStore = queryMtdStore.Where(x => x.Timecr.Date >= register.MtdFilterDate.DateStart.Date & x.Timecr.Date <= register.MtdFilterDate.DateEnd.Date);
                }
            }
            return(register);
        }
Exemple #13
0
        public async Task <IViewComponentResult> InvokeAsync(string idForm, int pageCount)
        {
            var user = await _userManager.GetUserAsync(HttpContext.User);

            int       pageSize = 10;
            int       page     = 1;
            MtdFilter filter   = await _context.MtdFilter.FirstOrDefaultAsync(x => x.IdUser == user.Id && x.MtdForm == idForm);

            if (filter != null)
            {
                page = filter.Page; pageSize = filter.PageSize;
            }

            FooterModelView model = new FooterModelView {
                IdForm = idForm, Page = page, PageSize = pageSize, PageCount = pageCount
            };

            return(View("Default", model));
        }
Exemple #14
0
        public async Task <IActionResult> PostSearchTextAsync()
        {
            IFormCollection requestForm = await Request.ReadFormAsync();

            string     form  = requestForm["indexForm"];
            string     value = requestForm["indexSearchText"];
            WebAppUser user  = await _userManager.GetUserAsync(User);

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

            bool old = true;

            if (filter == null)
            {
                old    = false;
                filter = new MtdFilter {
                    IdUser = user.Id, MtdForm = form
                };
            }

            filter.SearchNumber = "";
            filter.SearchText   = value;
            filter.Page         = 1;

            if (old)
            {
                _context.MtdFilter.Update(filter);
            }
            else
            {
                await _context.MtdFilter.AddAsync(filter);
            }

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


            return(Ok());
        }
Exemple #15
0
        public async Task <IActionResult> PostSerarchIndexAsync()
        {
            string form  = Request.Form["formId"];
            string value = Request.Form["searchNumber"];

            var user = await _userManager.GetUserAsync(User);

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

            bool old = true;

            if (filter == null)
            {
                old    = false;
                filter = new MtdFilter {
                    IdUser = user.Id, MtdForm = form
                };
            }

            filter.SearchNumber = value;
            filter.Page         = 1;
            filter.SearchText   = "";

            if (old)
            {
                _context.MtdFilter.Update(filter);
            }
            else
            {
                await _context.MtdFilter.AddAsync(filter);
            }

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (Exception ex) { throw ex.InnerException; }
            return(Ok());
        }
Exemple #16
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));
        }
Exemple #17
0
        public async Task <IList <MtdFilterScript> > GetScriptsAsync()
        {
            MtdFilter mtdFilter = await GetFilterAsync();

            return(await _context.MtdFilterScript.Where(x => x.MtdFilter == mtdFilter.Id).ToListAsync());
        }
Exemple #18
0
        public async Task <IActionResult> PostFilterColumnsAsync()
        {
            IFormCollection requestForm = await Request.ReadFormAsync();

            string idForm     = requestForm["indexDataColumnIdForm"];
            string data       = requestForm["indexDataColumnList"];
            string showNumber = requestForm["indexDataColumnNumber"];
            string showDate   = requestForm["indexDataColumnDate"];

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

            if (data.FirstOrDefault() != null && data.Length > 0)
            {
                fieldIds = data.Split(",").ToList();
            }
            WebAppUser user = await _userManager.GetUserAsync(User);

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

            if (filter == null)
            {
                filter = new MtdFilter
                {
                    IdUser       = user.Id,
                    MtdForm      = idForm,
                    SearchNumber = "",
                    SearchText   = "",
                    Page         = 1,
                    PageSize     = 10
                };
                await _context.MtdFilter.AddAsync(filter);

                await _context.SaveChangesAsync();
            }

            List <MtdFilterColumn> columns = new List <MtdFilterColumn>();
            int seq = 0;

            foreach (string field in fieldIds.Where(x => x != ""))
            {
                seq++;
                columns.Add(new MtdFilterColumn
                {
                    MtdFilter        = filter.Id,
                    MtdFormPartField = field,
                    Sequence         = seq
                });
            }


            try
            {
                filter.ShowNumber = showNumber == "true" ? (sbyte)1 : (sbyte)0;
                filter.ShowDate   = showDate == "true" ? (sbyte)1 : (sbyte)0;

                _context.MtdFilter.Update(filter);

                if (filter.MtdFilterColumn != null)
                {
                    _context.MtdFilterColumn.RemoveRange(filter.MtdFilterColumn);
                    await _context.SaveChangesAsync();
                }

                await _context.MtdFilterColumn.AddRangeAsync(columns);

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


            return(Ok());
        }
Exemple #19
0
        private async Task SaveFilterField(StringValues valueField, StringValues valueTerm, string result, MtdFilter filter)
        {
            int            term  = int.Parse(valueTerm);
            MtdFilterField field = new MtdFilterField {
                MtdFilter = filter.Id, MtdFormPartField = valueField, MtdTerm = term, Value = result
            };

            try
            {
                await _context.MtdFilterField.AddAsync(field);

                await _context.SaveChangesAsync();
            }
            catch (Exception ex) { throw ex.InnerException; }
        }
Exemple #20
0
        public async Task <IActionResult> PostFilterAddAsync()
        {
            IFormCollection requestForm = await Request.ReadFormAsync();

            string valueField     = requestForm["indexInputField"];
            string idForm         = requestForm["indexInputForm"];
            string valueFilter    = requestForm["indexInputFilter"];
            string valueTerm      = requestForm["indexInputTerm"];
            string valueFieldList = requestForm[$"{valueField}-inputlist"];

            string result = "";

            if (valueFilter.FirstOrDefault() != null)
            {
                result = valueFilter;
            }
            if (valueFieldList.FirstOrDefault() != null)
            {
                result = valueFieldList;
            }

            WebAppUser user = await _userManager.GetUserAsync(User);

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

            if (filter == null)
            {
                filter = new MtdFilter
                {
                    IdUser       = user.Id,
                    MtdForm      = idForm,
                    SearchNumber = "",
                    SearchText   = "",
                    Page         = 1,
                    PageSize     = 10
                };
                await _context.MtdFilter.AddAsync(filter);

                await _context.SaveChangesAsync();
            }

            if (valueField != "period")
            {
                await SaveFilterField(valueField, valueTerm, result, filter);
            }
            else
            {
                string dateStart  = requestForm["periodStart"];
                string dateFinish = requestForm["periodFinish"];

                bool isOkDateStart  = DateTime.TryParse(dateStart, out DateTime dateTimeStart);
                bool isOkDateFinish = DateTime.TryParse(dateFinish, out DateTime dateTimeFinish);

                if (isOkDateStart && isOkDateFinish)
                {
                    MtdFilterDate mtdFilterDate = new MtdFilterDate
                    {
                        Id        = filter.Id,
                        DateStart = dateTimeStart,
                        DateEnd   = dateTimeFinish
                    };

                    bool isExists = await _context.MtdFilterDate.Where(x => x.Id == filter.Id).AnyAsync();

                    if (isExists)
                    {
                        _context.MtdFilterDate.Update(mtdFilterDate);
                    }
                    else
                    {
                        await _context.MtdFilterDate.AddAsync(mtdFilterDate);
                    }

                    await _context.SaveChangesAsync();
                }
            }


            return(Ok());
        }
Exemple #21
0
        public async Task <IViewComponentResult> InvokeAsync(string idForm)
        {
            var user = await _userHandler.GetUserAsync(HttpContext.User);

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

            IList <MtdFilterColumn> mtdFilterColumns = await _context.MtdFilterColumn
                                                       .Include(m => m.MtdFormPartFieldNavigation)
                                                       .Include(x => x.MtdFilterNavigation)
                                                       .Where(x => x.MtdFilterNavigation.IdUser == user.Id && x.MtdFilterNavigation.MtdForm == idForm)
                                                       .OrderBy(x => x.Sequence)
                                                       .ToListAsync();

            List <MtdFormPartField>  mtdFormPartFields = new List <MtdFormPartField>();
            IList <MtdFormPartField> tempFields        = await _context.MtdFormPartField
                                                         .Include(x => x.MtdFormPartNavigation)
                                                         .Where(x => x.MtdFormPartNavigation.MtdForm == idForm && partIds.Contains(x.MtdFormPart))
                                                         .OrderBy(o => o.MtdFormPartNavigation.Sequence).ThenBy(o => o.Sequence)
                                                         .ToListAsync();

            int sequence = 0;

            foreach (var column in mtdFilterColumns)
            {
                var field = tempFields.Where(x => x.Id == column.MtdFormPartField).FirstOrDefault();
                if (field != null)
                {
                    sequence++;
                    field.Sequence = sequence;
                    mtdFormPartFields.Add(field);
                }
            }

            foreach (var field in tempFields)
            {
                if (!mtdFilterColumns.Where(x => x.MtdFormPartField == field.Id).Any())
                {
                    sequence++;
                    field.Sequence = sequence;
                    mtdFormPartFields.Add(field);
                }
            }

            IList <MtdFormPart> mtdFormParts = mtdFormPartFields.GroupBy(x => x.MtdFormPartNavigation.Id)
                                               .Select(g => g.FirstOrDefault(x => x.MtdFormPartNavigation.Id == g.Key).MtdFormPartNavigation)
                                               .OrderBy(x => x.Sequence)
                                               .ToList();

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

            bool showNumber = true;
            bool showDate   = true;

            if (mtdFilter != null)
            {
                showNumber = mtdFilter.ShowNumber == 1 ? true : false;
                showDate   = mtdFilter.ShowDate == 1 ? true : false;
            }

            ColumnsModelView fieldsModelView = new ColumnsModelView
            {
                IdForm            = idForm,
                MtdFormParts      = mtdFormParts,
                MtdFilterColumns  = mtdFilterColumns,
                MtdFormPartFields = mtdFormPartFields,
                ShowNumber        = showNumber,
                ShowDate          = showDate
            };

            return(View(fieldsModelView));
        }
Exemple #22
0
        public async Task <bool> IsShowNumber()
        {
            MtdFilter mtdFilter = await GetFilterAsync();

            return(mtdFilter.ShowNumber == 1 ? true : false);
        }
        public async Task <IActionResult> PostExportAsync()
        {
            IFormCollection requestForm = await Request.ReadFormAsync();

            var data = requestForm["InputFormForExport"];

            if (data.FirstOrDefault() == null || data.FirstOrDefault().Equals(string.Empty))
            {
                return(NotFound());
            }
            string idForm = data.FirstOrDefault();

            var user = await _userHandler.GetUserAsync(User);

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

            FilterHandler handlerFilter = new FilterHandler(_context, idForm, user, _userHandler);
            MtdFilter     mtdFilter     = await handlerFilter.GetFilterAsync();

            if (mtdFilter == null)
            {
                return(NotFound());
            }
            Incomer incomer = await handlerFilter.GetIncomerDataAsync();

            TypeQuery typeQuery = await handlerFilter.GetTypeQueryAsync();

            incomer.PageSize = 1000;

            OutFlow outFlow = await handlerFilter.GetStackFlowAsync(incomer, typeQuery);

            IList <MtdStore> mtdStore = outFlow.MtdStores;

            IList <string> storeIds = mtdStore.Select(s => s.Id).ToList();
            IList <string> fieldIds = incomer.FieldForColumn.Select(x => x.Id).ToList();

            IList <string> allowFiieldIds = await _context.MtdFormPartField.Where(x => partIds.Contains(x.MtdFormPart)).Select(x => x.Id).ToListAsync();

            fieldIds = allowFiieldIds.Where(x => fieldIds.Contains(x)).ToList();

            StackHandler          handlerStack  = new StackHandler(_context);
            IList <MtdStoreStack> mtdStoreStack = await handlerStack.GetStackAsync(storeIds, fieldIds);

            IList <MtdFormPartField> columns = incomer.FieldForColumn.Where(x => fieldIds.Contains(x.Id)).ToList();

            IWorkbook workbook = CreateWorkbook(mtdStore, columns, mtdStoreStack);

            var ms = new NpoiMemoryStream
            {
                AllowClose = false
            };

            workbook.Write(ms);
            ms.Flush();
            ms.Seek(0, SeekOrigin.Begin);
            ms.AllowClose = true;

            return(new FileStreamResult(ms, new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
            {
                FileDownloadName = $"{DateTime.UtcNow:yyyyMMddHHmmss}.xlsx"
            });

            return(Ok());
        }
Exemple #24
0
        public async Task <IViewComponentResult> InvokeAsync(string idForm)
        {
            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);

            var query = _context.MtdFormPartField.Include(m => m.MtdFormPartNavigation)
                        .Where(x => x.MtdFormPartNavigation.MtdForm == idForm & x.Active & partIds.Contains(x.MtdFormPart))
                        .OrderBy(x => x.MtdFormPartNavigation.Sequence).ThenBy(x => x.Sequence);

            IList <MtdFormPartField> mtdFields;

            if (filter != null)
            {
                List <string> fieldIds = await _context.MtdFilterField.Where(x => x.MtdFilter == filter.Id)
                                         .Select(x => x.MtdFormPartField).ToListAsync();

                mtdFields = await query.Where(x => !fieldIds.Contains(x.Id)).ToListAsync();
            }
            else
            {
                mtdFields = await query.ToListAsync();
            }

            IList <MtdSysTerm> mtdSysTerms = await _context.MtdSysTerm.ToListAsync();

            List <SelectorList> storeList = new List <SelectorList>();

            foreach (var field in mtdFields.Where(x => x.MtdSysType == 11).ToList())
            {
                string idFormForList = await _context.MtdFormList.Where(x => x.Id == field.Id).Select(x => x.MtdForm).FirstOrDefaultAsync();

                MtdFormPartField fieldForList = await _context.MtdFormPartField.Include(m => m.MtdFormPartNavigation)
                                                .Where(x => x.MtdFormPartNavigation.MtdForm == idFormForList & x.MtdSysType == 1)
                                                .OrderBy(o => o.MtdFormPartNavigation.Sequence).ThenBy(o => o.Sequence).FirstOrDefaultAsync();

                if (idFormForList != null)
                {
                    List <SelecorStore> selecorStores = await _context.MtdStoreStack
                                                        .Include(x => x.MtdStoreStackText).Where(x => x.MtdFormPartField == fieldForList.Id)
                                                        .Select(x => new SelecorStore {
                        IdStore = x.MtdStore, Result = x.MtdStoreStackText.Register
                    })
                                                        .OrderBy(x => x.Result)
                                                        .ToListAsync();

                    SelectorList selectorList = new SelectorList
                    {
                        FieldAim = field,
                        FieldOut = fieldForList,
                        Store    = selecorStores
                    };

                    storeList.Add(selectorList);
                }
            }

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

            SelectorModelView selector = new SelectorModelView()
            {
                IdForm            = idForm,
                MtdFormPartFields = mtdFields,
                MtdSysTerms       = mtdSysTerms,
                StoreList         = storeList,
                MtdFilterScripts  = scripts
            };

            return(View("Default", selector));
        }