public static ModularProgramModel InitializeModel(ModularProgramModel m, IDnsRequestContext request)
        {
            m.RequestType     = ModularProgramRequestType.All.FirstOrDefault(rt => rt.ID == request.RequestType.ID);
            m.RequestTypeName = request.RequestType.Name;
            m.RequestId       = request.RequestID;
            string requestName     = GetRequestName(request.RequestType.ID.ToString());
            string requestViewName = GetRequestViewName(request.RequestType.ID.ToString());

            return(m);
        }
        public DnsResult ValidateForSubmission(IDnsRequestContext context)
        {
            ModularProgramModel m = GetModel(context);
            IList <string>      errorMessages;

            if (Validate(m, out errorMessages))
            {
                return(DnsResult.Success);
            }
            else
            {
                return(DnsResult.Failed(errorMessages.ToArray <string>()));
            }
        }
        public Func <HtmlHelper, IHtmlString> DisplayResponse(IDnsResponseContext context, IDnsResponseAggregationMode aggregationMode)
        {
            var m = new ModularProgramModel();
            IList <SignatureDatum> signatureDataList = new List <SignatureDatum>();

            using (var db = new DataContext())
            {
                db.RequestSearchTerms.Where(term => term.RequestID == context.Request.RequestID).ForEach(term =>
                                                                                                         signatureDataList.Add(new SignatureDatum
                {
                    Variable = Enum.GetName(typeof(RequestSearchTermType), term.Type),
                    Value    = term.StringValue
                }));
                m.SignatureData = JsonConvert.SerializeObject(signatureDataList);
                m.HasResponses  = ResponseService.GetVirtualResponses(context.Request.RequestID, true).Count() > 0;

                //PMNDEV-4421
                var lDocs = (from r in context.DataMartResponses
                             from doc in r.Documents
                             orderby r.DataMart.ID
                             select new
                {
                    Name = doc.Name,
                    Length = doc.Length,
                    ID = doc.ID,
                    DataMartName = r.DataMart.Name,
                    RevisionVersion = doc.RevisionVersion
                });

                var docs = from r in lDocs
                           group r by r.DataMartName into grp
                           select new FileSelection
                           (
                    grp.FirstOrDefault().Name,
                    grp.OrderByDescending(p => p.RevisionVersion).FirstOrDefault().Length,
                    grp.OrderByDescending(p => p.RevisionVersion).FirstOrDefault().ID,
                    grp.FirstOrDefault().DataMartName,
                    FileHelper.GetMimeType(grp.FirstOrDefault().Name)
                           );

                m.RequestFileList = docs.ToList();

                return(html => html
                       .Partial <Views.ModularProgram.DisplayResponse>()
                       .WithModel(m));
            }
        }
        private byte[] BuildRequest(IDnsRequestContext request, ModularProgramModel m)
        {
            request_builder requestBuilder = new request_builder();

            requestBuilder.header = new header();
            requestBuilder.header.request_type        = request.RequestType.Name;
            requestBuilder.header.request_name        = request.Header.Name;
            requestBuilder.header.request_description = request.Header.Description;
            if (request.Header.DueDate != null)
            {
                requestBuilder.header.due_date = (DateTime)request.Header.DueDate;
            }
            requestBuilder.header.activity             = request.Header.Activity != null ? request.Header.Activity.Name : null;
            requestBuilder.header.activity_description = request.Header.ActivityDescription;
            requestBuilder.header.submitter_email      = request.Header.AuthorEmail;

            requestBuilder.request = new request();
            // Build package manifest
            IList <Lpp.Dns.HealthCare.ModularProgram.Data.Serializer.ModularProgramItem> list = new List <Lpp.Dns.HealthCare.ModularProgram.Data.Serializer.ModularProgramItem>();

            m.PackageManifest.ForEach(s => list.Add(new Data.Serializer.ModularProgramItem()
            {
                ProgramName = s.ProgramName, Description = s.Description, TypeCode = s.TypeCode, Scenarios = s.Scenarios
            }));
            requestBuilder.request.PackageManifest = list.ToArray();
            requestBuilder.request.Files           = m.Files.ToArray();

            byte[]        requestBuilderBytes;
            XmlSerializer serializer = new XmlSerializer(typeof(request_builder));

            using (StringWriter sw = new StringWriter())
            {
                using (XmlWriter xw = XmlWriter.Create(sw, new XmlWriterSettings {
                    OmitXmlDeclaration = true
                }))
                {
                    serializer.Serialize(xw, requestBuilder, null);
                    requestBuilderBytes = Encoding.UTF8.GetBytes(sw.ToString());
                }
            }

            return(requestBuilderBytes);
        }
        private ModularProgramModel GetModel(IDnsRequestContext request)
        {
            using (var db = new DataContext())
            {
                var m = new ModularProgramModel();

                //PMNDEV-4421
                m.RequestFileList = (from d in db.Documents
                                     where d.ItemID == request.RequestID && d.Kind == DocumentKind.User
                                     group d by d.FileName into grp
                                     select new FileSelection
                {
                    DataMartName = "",
                    FileName = grp.FirstOrDefault().FileName,
                    ID = grp.OrderByDescending(p => p.RevisionVersion).FirstOrDefault().ID,
                    MimeType = grp.OrderByDescending(p => p.RevisionVersion).FirstOrDefault().MimeType,
                    Size = grp.OrderByDescending(p => p.RevisionVersion).FirstOrDefault().Length
                }).ToList();

                return(m);
            }
        }
 private bool Validate(ModularProgramModel m, out IList <string> errorMessages)
 {
     errorMessages = new List <string>();
     return(errorMessages.Count > 0 ? false : true);
 }