public async Task <IHttpActionResult> GetFormStatus(
            Guid?periodComponentId,
            string organizationCode = null)
        {
            if (bfsConfig.Logging.TraceEnabled)
            {
                Configuration.Services.GetTraceWriter().Info(Request, "Контроллер " + GetType().Name, MethodBase.GetCurrentMethod().Name);
            }

            ReportPeriodComponent reportPeriodComponent = await _db.ReportPeriodComponents.Where(c => c.Id == periodComponentId).FirstOrDefaultAsync();

            ReportSubmitChain reportSubmitChain = await _db.ReportSubmitChains
                                                  .Where(c => c.Id == reportPeriodComponent.ReportSubmitChainId)
                                                  .Include(c => c.ChainElements)
                                                  .ThenInclude(e => e.Organization)
                                                  .FirstOrDefaultAsync();

            List <StoredFormData> storedFormData = await _db.StoredFormDatas
                                                   .Where(sd => !periodComponentId.HasValue || sd.ReportPeriodComponentId == periodComponentId)
                                                   .Where(sd => organizationCode == null || sd.Organization.Code == organizationCode)
                                                   .Include(sd => sd.Organization)
                                                   .ToListAsync();

            foreach (ReportSubmitChainElement chainElement in reportSubmitChain.ChainElements)
            {
                string metaFormCode = storedFormData.Count == 0 ? "" : storedFormData.FirstOrDefault().MetaFormCode;

                if (storedFormData.Where(s => s.OrganizationId == chainElement.OrganizationId).Count() == 0)
                {
                    storedFormData.Add(new StoredFormData()
                    {
                        StatusNumber       = 0,
                        Organization       = chainElement.Organization,
                        ExpertStatusNumber = 0,
                        ExternalConstraintsStatusNumber = 0,
                        InternalConstraintsStatusNumber = 0,
                        ReportPeriodComponent           = reportPeriodComponent,
                        ReportPeriodComponentId         = reportPeriodComponent.Id,
                        OrganizationId         = chainElement.OrganizationId,
                        SubmitChainElementType = chainElement.Type,
                        MetaFormCode           = metaFormCode,
                        Id = null,
                    });
                }
            }

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

            return(Ok(storedFormData));
        }
Пример #2
0
        public async Task <IHttpActionResult> GetSubmitChain(Guid id)
        {
            if (bfsConfig.Logging.TraceEnabled)
            {
                Configuration.Services.GetTraceWriter().Info(Request, "Контроллер " + GetType().Name, MethodBase.GetCurrentMethod().Name);
            }

            ReportSubmitChain submitChain = await _db.ReportSubmitChains
                                            .Where(sc => sc.Id == id)
                                            .Include(sc => sc.ReportPeriodComponents)
                                            .FirstOrDefaultAsync();

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

            return(Ok(submitChain));
        }