Пример #1
0
 public IRelogComponent DoWork(Account account, ref ComponentResult result)
 {
     if (Check(account))
     {
         result = new ComponentResult
         {
             Result     = EComponentResult.Halt,
             LogMessage = "Halting due to alternative scheduler component settings for {0}.",
         };
         if (IsReady(account))
         {
             Update(account);
             result = new ComponentResult
             {
                 Result     = EComponentResult.Kill,
                 LogMessage = "Stopping due to alternative scheduler component settings for {0}.",
             };
         }
     }
     else
     {
         result = new ComponentResult
         {
             Result = EComponentResult.Ignore,
         };
     }
     return(this);
 }
 public IRelogComponent DoWork(Account account, ref ComponentResult result)
 {
     if (Check(account))
     {
         result = new ComponentResult
         {
             Result     = EComponentResult.Halt,
             LogMessage = LanguageManager.Singleton.GetTranslation(ETranslations.SchedulerComponentHalt),
         };
         if (IsReady(account))
         {
             Update(account);
             result = new ComponentResult
             {
                 Result     = EComponentResult.Kill,
                 LogMessage = LanguageManager.Singleton.GetTranslation(ETranslations.SchedulerComponentKill),
             };
         }
     }
     else
     {
         result = new ComponentResult
         {
             Result = EComponentResult.Ignore,
         };
     }
     return(this);
 }
 public IRelogComponent DoWork(Account account, ref ComponentResult result)
 {
     if (Check(account))
     {
         result = new ComponentResult
         {
             Result = EComponentResult.Continue,
         };
         if (IsReady(account))
         {
             result = new ComponentResult
             {
                 Result     = EComponentResult.Halt,
                 LogMessage =
                     LanguageManager.Singleton.GetTranslation(ETranslations.LaunchDelayComponentHalt),
             };
         }
     }
     else
     {
         result = new ComponentResult
         {
             Result = EComponentResult.Ignore,
         };
     }
     return(this);
 }
Пример #4
0
 public string Process(IPayLoad context)
 {
     IComponent component=service.GetComponent(context.ID);
     if (component == null)
     {
         ComponentResult result = new ComponentResult() { Code = 404, Message = "Not found Component : " + context.ID };
         return CommonHelper.CreateComponentResult(result, context.Type);
     }
     return component.GetRenderer().Render(context, component);
 }
Пример #5
0
 public static string CreateComponentResult(ComponentResult result,RenderType Type)
 {
     if(Type==RenderType.Xml)
     {
         return new XMLSerializer().Serializer(result);
     }
     else
     {
         return new JSONSerializer().Serializer(result);
     }
 }
Пример #6
0
        public IEnumerable <ComponentResult> GetComponent()
        {
            Database db = new DatabaseProviderFactory().Create("JIRA");
            List <ComponentResult> result = new List <ComponentResult>();

            using (DbCommand cmd = db.GetStoredProcCommand("[dbo].[GetComponent]"))
            {
                cmd.CommandTimeout = dbTimeout;
                DataSet ds = db.ExecuteDataSet(cmd);
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    ComponentResult component = new ComponentResult();
                    component.Id   = (int)ds.Tables[0].Rows[i]["Id"];
                    component.Name = (string)ds.Tables[0].Rows[i]["Name"];
                    result.Add(component);
                }
            }
            return(result);
        }
Пример #7
0
 public IRelogComponent DoWork(Account account, ref ComponentResult result)
 {
     if (Check(account))
     {
         Update(account);
         result = new ComponentResult
         {
             Result = EComponentResult.Start,
         };
     }
     else
     {
         result = new ComponentResult
         {
             Result = EComponentResult.Ignore,
         };
     }
     return(this);
 }
 public IRelogComponent DoWork(Account account, ref ComponentResult result)
 {
     if (Check(account))
     {
         result = new ComponentResult
         {
             Result     = EComponentResult.Halt,
             LogMessage = LanguageManager.Singleton.GetTranslation(ETranslations.BasicStopComponentHalt),
         };
         if (IsReady(account))
         {
             if (!account.PerformedCheck)
             {
                 account.PerformedCheck = true;
                 if (account.Running)
                 {
                     account.SetShouldBeRunning(true);
                 }
                 result = new ComponentResult
                 {
                     Result = EComponentResult.ContinueForced,
                 };
             }
             else
             {
                 result = new ComponentResult
                 {
                     Result     = EComponentResult.Kill,
                     LogMessage = LanguageManager.Singleton.GetTranslation(ETranslations.BasicStopComponentStop),
                 };
             }
             Update(account);
         }
     }
     else
     {
         result = new ComponentResult
         {
             Result = EComponentResult.Ignore,
         };
     }
     return(this);
 }
Пример #9
0
 public IRelogComponent DoWork(Account account, ref ComponentResult result)
 {
     if (!account.RestartDelayActive && Check(account))
     {
         account.SetRestartDelayActive(true);
         account.SetLastStopTime(DateTime.Now);
     }
     result = IsReady(account)
         ? new ComponentResult
     {
         Result     = EComponentResult.Halt,
         LogMessage =
             LanguageManager.Singleton.GetTranslation(ETranslations.RestartDelayComponentHalt),
     }
         : new ComponentResult
     {
         Result = EComponentResult.Ignore,
     };
     return(this);
 }
Пример #10
0
 public IRelogComponent DoWork(Account account, ref ComponentResult result)
 {
     if (account.BreakObject != null && account.BreakObject.Check())
     {
         if (account.BreakObject.IsReady())
         {
             result = Check(account)
                 ? new ComponentResult
             {
                 Result     = EComponentResult.Kill,
                 LogMessage =
                     LanguageManager.Singleton.GetTranslation(ETranslations.BreakComponentKill),
             }
                 : new ComponentResult
             {
                 Result     = EComponentResult.Halt,
                 LogMessage =
                     LanguageManager.Singleton.GetTranslation(ETranslations.BreakComponentHalt),
             };
         }
         else
         {
             result = new ComponentResult
             {
                 Result = EComponentResult.Continue,
             };
         }
     }
     else
     {
         result = new ComponentResult
         {
             Result = EComponentResult.Ignore,
         };
     }
     if (IsReady(account))
     {
         Update(account);
     }
     return(this);
 }
Пример #11
0
 public string Process(IPayLoad payload)
 {
     ConfigurationPayLoad configPayload = payload as ConfigurationPayLoad;
     IConfigBean bean;
     if (string.IsNullOrEmpty(configPayload.ID))
     {
         bean = defaultService.GetConfigBean(configPayload);
         return bean.GetRenderer().Render(configPayload, bean);
     }
     string action = configPayload.Action;
     if (action == "update")
     {
         return new JSONSerializer().Serializer(UpdateConfigBean(configPayload));
     }
     bean = configService.GetConfigBean(configPayload);
     if (bean == null)
     {
         ComponentResult result = new ComponentResult() { Code = 404, Message = "Not found ConfigBean : " + configPayload.ID };
         return CommonHelper.CreateComponentResult(result, payload.Type);
     }
     return bean.GetRenderer().Render(configPayload, bean);           
 }
 public IRelogComponent DoWork(Account account, ref ComponentResult result)
 {
     Logger.LoggingObject.Log("[TestComponent] DoWork");
     return(this);
 }
Пример #13
0
        /// <summary>
        /// См. <see cref="OutcomingMessageSender{TMessage}.OnSend(MessageInfo{TMessage}, MessagingServiceBase{TMessage})"/>.
        /// </summary>
        internal protected override ComponentResult OnSend(MessageInfo <EmailMessage> message, MessagingServiceBase <EmailMessage> service)
        {
            try
            {
                var mailMessage = new MailMessage()
                {
                    From            = new MailAddress(message.Message.From.ContactData, string.IsNullOrEmpty(message.Message.From.Name) ? message.Message.From.ContactData : message.Message.From.Name),
                    SubjectEncoding = Encoding.UTF8,
                    Subject         = message.Message.Subject,
                    IsBodyHtml      = true,
                    BodyEncoding    = Encoding.UTF8,
                    Body            = message.Message.Body?.ToString(),
                };

                if (service is EmailService && service is IDebugSupported emailService && emailService.IsDebugModeEnabled())
                {
                    var debugEmail = emailService.GetDebugRecipient();
                    if (string.IsNullOrEmpty(debugEmail))
                    {
                        return(ComponentResult.NotHandled);
                    }

                    message.Message.To.ForEach(x => mailMessage.To.Add(new MailAddress(debugEmail, string.IsNullOrEmpty(x.Name) ? x.ContactData : x.Name)));
                }
                else
                {
                    message.Message.To.ForEach(x => mailMessage.To.Add(new MailAddress(x.ContactData, string.IsNullOrEmpty(x.Name) ? x.ContactData : x.Name)));
                }

                try
                {
                    if (_isIgnoreCertErrors && ServicePointManager.ServerCertificateValidationCallback != _certCallback)
                    {
                        ServicePointManager.ServerCertificateValidationCallback = _certCallback;
                    }
                    getClient().Send(mailMessage);
                    return(ComponentResult.Complete);
                }
                catch (System.Security.Authentication.AuthenticationException ex)
                {
                    if (DateTime.Now > _certErrorTimeout)
                    {
                        service.RegisterServiceEvent(EventType.Error, "SMTP - ошибка отправки письма", "Ошибка проверки сертификата", ex);
                        _certErrorTimeout = DateTime.Now.AddMinutes(15);
                    }
                    return(ComponentResult.NotHandled);
                }
                catch (SmtpException ex)
                {
                    if (ex.Message.Contains("5.7.1 Client does not have permissions to send as this sender"))
                    {
                        return(ComponentResult.Error($"У пользователя, от имени которого выполняется подключение к почтовому серверу, недостаточно прав для отправки писем от имени '{message.Message.From.ContactData}'."));
                    }

                    var canBeResend = true;
                    service.RegisterServiceEvent(EventType.Error, "SMTP - ошибка отправки письма", null, ex);
                    //if (ex.Message.Contains("Message rejected: Email address is not verified"))
                    //{
                    //    var match = System.Text.RegularExpressions.Regex.Match(ex.Message, "Message rejected: Email address is not verified. The following identities failed the check in region ([^:]+): (.+)");
                    //    if (match.Success)
                    //    {
                    //        throw new Exception($"Добавьте адрес '{match.Groups[2].Value}' в раздел 'Identity Management/Email Addresses', либо снимите ограничения на отправку писем в регионе '{match.Groups[1].Value}'.");
                    //    }
                    //    canBeResend = false;
                    //}

                    if (canBeResend)
                    {
                        switch (ex.StatusCode)
                        {
                        case SmtpStatusCode.ServiceClosingTransmissionChannel:
                        case SmtpStatusCode.ServiceNotAvailable:
                        case SmtpStatusCode.TransactionFailed:
                        case SmtpStatusCode.GeneralFailure:
                            try
                            {
                                _client.Dispose();
                                InitClient();
                            }
                            catch { }

                            getClient().Send(mailMessage);
                            return(ComponentResult.Complete);

                        default:
                            throw;
                        }
                    }
                    else
                    {
                        throw;
                    }
                }

                //todo добавить прикрепление файлов в отправку писем.
                //if (is_array($files) && count($files) > 0)
                //	foreach ($files as $k=>$v)
                //	{
                //		if (isset($v['url"]) && isset($v['name"]))
                //			$mail->AddAttachment(SITE_PATH.$v['url"], $v['name"].'.'.pathinfo($v['url"], PATHINFO_EXTENSION));
                //		else if (isset($v['path"]) && isset($v['name"]))
                //			$mail->AddAttachment($v['path"], $v['name"]);
                //	}

                //$success = $mail->send();
            }
        public void DoWork()
        {
            while (_keepAlive)
            {
                while (_isRunning)
                {
                    try
                    {
                        if (_needDelay)
                        {
                            Thread.Sleep(_delay);
                        }

                        foreach (Account account in Config.Singleton.AccountSettings.ToArray())
                        {
                            var results = new List <ComponentResult>();
                            foreach (
                                ComponentClass component in
                                ComponentManager.Singleton.GetComponents().ToArray().Where(c => c.IsEnabled))
                            {
                                var result = new ComponentResult();
                                component.Component.DoWork(account, ref result);
                                results.Add(result);
                            }
                            if (results.Any(r => r.Result == EComponentResult.KillForced))
                            {
                                if (Config.Singleton.GeneralSettings.ExtensiveLogging)
                                {
                                    foreach (
                                        ComponentResult componentResult in
                                        results.Where(r => r.Result == EComponentResult.KillForced))
                                    {
                                        Logger.LoggingObject.Log(ELogType.Debug, componentResult.LogMessage,
                                                                 account.LoginName);
                                    }
                                }
                                new KillWorker().DoWork(account).Update(account);
                            }
                            else if (results.Any(r => r.Result == EComponentResult.HaltForced))
                            {
                                if (Config.Singleton.GeneralSettings.ExtensiveLogging)
                                {
                                    foreach (
                                        ComponentResult componentResult in
                                        results.Where(r => r.Result == EComponentResult.HaltForced))
                                    {
                                        Logger.LoggingObject.Log(ELogType.Debug, componentResult.LogMessage,
                                                                 account.LoginName);
                                    }
                                }
                                account.SetLastStopTime(DateTime.Now);
                            }
                            else if (results.Any(r => r.Result == EComponentResult.StartForced))
                            {
                                if (Config.Singleton.GeneralSettings.ExtensiveLogging)
                                {
                                    foreach (
                                        ComponentResult componentResult in
                                        results.Where(r => r.Result == EComponentResult.StartForced))
                                    {
                                        Logger.LoggingObject.Log(ELogType.Debug, componentResult.LogMessage,
                                                                 account.LoginName);
                                    }
                                }
                                new StartWorker().DoWork(account);
                            }
                            else if (results.Any(r => r.Result == EComponentResult.ContinueForced))
                            {
                            }
                            else if (results.Any(r => r.Result == EComponentResult.Kill))
                            {
                                if (Config.Singleton.GeneralSettings.ExtensiveLogging)
                                {
                                    foreach (
                                        ComponentResult componentResult in
                                        results.Where(r => r.Result == EComponentResult.Kill))
                                    {
                                        Logger.LoggingObject.Log(ELogType.Debug, componentResult.LogMessage,
                                                                 account.LoginName);
                                    }
                                }
                                new KillWorker().DoWork(account).Update(account);
                            }
                            else if (results.Any(r => r.Result == EComponentResult.Halt))
                            {
                                if (Config.Singleton.GeneralSettings.ExtensiveLogging)
                                {
                                    foreach (
                                        ComponentResult componentResult in
                                        results.Where(r => r.Result == EComponentResult.Halt))
                                    {
                                        Logger.LoggingObject.Log(ELogType.Debug, componentResult.LogMessage,
                                                                 account.LoginName);
                                    }
                                }
                            }
                            else if (results.Any(r => r.Result == EComponentResult.Start))
                            {
                                if (VersionControl.CheckVersionBot())
                                {
                                    new StartWorker().DoWork(account).Update(account);
                                }
                                else
                                {
                                    VersionControl.Update();
                                }
                            }
                            else if (results.Any(r => r.Result == EComponentResult.Continue))
                            {
                            }
                            else if (results.Any(r => r.Result == EComponentResult.Ignore))
                            {
                            }
                            else if (results.Any(r => r.Result == EComponentResult.Default))
                            {
                            }
                        }
                        User32.EnumWindows(EnumTheWindows, IntPtr.Zero);

                        IEnumerable <Process> gw2Processes = UpdateListWithRemainingGW2Processes();

                        if (_checkAll || Config.Singleton.GeneralSettings.PollingDelay >= 60)
                        {
                            Process[] enumerable = gw2Processes as Process[] ?? gw2Processes.ToArray();
                            foreach (Process gw2Process in enumerable)
                            {
                                UpdateProcessIdForMatchingScheduler(gw2Process);
                                if (!gw2Process.Responding)
                                {
                                    if (FrozenGW2Windows.All(p => p.Key.Id != gw2Process.Id))
                                    {
                                        AddUnresponsiveProcessToTheList(gw2Process);
                                    }
                                    else
                                    {
                                        GetRidOfProcessesThatHaveBeenFrozenForLong(gw2Process);
                                    }
                                }
                                else
                                {
                                    if (_enableViewStateChecks)
                                    {
                                        var viewState = (EViewState)GW2MinionLauncher.ViewState((uint)gw2Process.Id);
                                        //GetViewState(gw2Process);
                                        if (viewState != EViewState.ViewGameplay &&
                                            DeadGW2Windows.All(p => p.Key.Id != gw2Process.Id))
                                        {
                                            AddDeadProcessToTheList(gw2Process, viewState);
                                        }
                                        else if (viewState != EViewState.ViewGameplay)
                                        {
                                            GetRidOfProcessesThatHaveBeenIdleForLong(gw2Process, viewState);
                                        }
                                        else
                                        {
                                            RemoveWorkingWindowsFromTheList(gw2Process);
                                        }
                                    }
                                    RemoveRespondingWindowsFromTheList(gw2Process);
                                    MinimizeGW2Windows(gw2Process);
                                }
                            }
                            //if (_buildNumberNeedUpdate == 0)
                            //{
                            //    try
                            //    {
                            //        _buildNumber = GW2MinionLauncher.BuildNumberFromApi();
                            //        //VersionChecker.CheckForUpdates();
                            //    }
                            //    catch
                            //    {
                            //        _buildNumber = 0;
                            //    }
                            //    _buildNumberNeedUpdate = 0;
                            //    try
                            //    {
                            //        if (enumerable.Any())
                            //            _enableViewStateChecks =
                            //                GW2MinionLauncher.BuildNumber((uint) enumerable.First().Id) == _buildNumber;
                            //        && _buildNumber == Pointers.BuildNumber;
                            //    }
                            //    catch
                            //    {
                            //        _enableViewStateChecks = false;
                            //    }
                            //}
                            //_buildNumberNeedUpdate++;
                            //if (_buildNumberNeedUpdate > 30)
                            //    _buildNumberNeedUpdate = 0;
                        }
                        _checkAll = !_checkAll;
                    }
                    catch (Exception)
                    {
                    }
                    Thread.Sleep(Config.Singleton.GeneralSettings.PollingDelay * 1000);
                }
                Thread.Sleep(10000);
            }
        }
Пример #15
0
        public PeekResult Peek(PeekParameters parameters)
        {
            try
            {
                if (parameters == null)
                {
                    throw new ArgumentNullException("parameters");
                }

                if (string.IsNullOrWhiteSpace(parameters.ItemUri))
                {
                    throw new ArgumentException(Resources.MissingItemUri);
                }

                if (Client.IsExistingObject(parameters.ItemUri))
                {
                    var readOptions = new ReadOptions {
                        LoadFlags = LoadFlags.Expanded | LoadFlags.WebDavUrls
                    };
                    var item = Client.Read(parameters.ItemUri, readOptions);

                    switch (GetItemType(item.Id))
                    {
                    case ItemType.Category:
                        return(CategoryResult.From((CategoryData)item, Client, CurrentUserId));

                    case ItemType.Component:
                        return(ComponentResult.From((ComponentData)item, CurrentUserId));

                    case ItemType.ComponentTemplate:
                        return(ComponentTemplateResult.From((ComponentTemplateData)item, Client, CurrentUserId));

                    case ItemType.Folder:
                        return(FolderResult.From((FolderData)item, CurrentUserId));

                    case ItemType.Group:
                        return(GroupResult.From((GroupData)item));

                    case ItemType.Keyword:
                        return(KeywordResult.From((KeywordData)item, CurrentUserId));

                    case ItemType.MultimediaType:
                        return(MultimediaTypeResult.From((MultimediaTypeData)item));

                    case ItemType.Page:
                        return(PageResult.From((PageData)item, Client, CurrentUserId));

                    case ItemType.PageTemplate:
                        return(PageTemplateResult.From((PageTemplateData)item, Client, CurrentUserId));

                    case ItemType.Publication:
                        return(PublicationResult.From((PublicationData)item, CurrentUserId));

                    case ItemType.PublicationTarget:
                        return(PublicationTargetResult.From((PublicationTargetData)item));

                    case ItemType.Schema:
                        return(SchemaResult.From((SchemaData)item, CurrentUserId));

                    case ItemType.StructureGroup:
                        return(StructureGroupResult.From((StructureGroupData)item, CurrentUserId));

                    case ItemType.TargetGroup:
                        return(TargetGroupResult.From((TargetGroupData)item, CurrentUserId));

                    case ItemType.TargetType:
                        return(TargetTypeResult.From((TargetTypeData)item));

                    case ItemType.TemplateBuildingBlock:
                        return(TemplateBuildingBlockResult.From((TemplateBuildingBlockData)item, Client, CurrentUserId));

                    case ItemType.User:
                        return(UserResult.From((UserData)item, Client));

                    case ItemType.VirtualFolder:
                        return(VirtualFolderResult.From((VirtualFolderData)item, CurrentUserId));
                    }
                }

                return(new EmptyResult());
            }
            catch (Exception ex)
            {
                throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }
Пример #16
0
        // GET: /<controller>/
        public FileStreamResult GetTemplateDetails(int templateId, int patientId, string templatelocation, int labReportId, int currentUser)
        {
            LabDbContext labDbContext = new LabDbContext(connString);

            this.labTemplateFolder = templatelocation;
            var viewReport = (from temp in labDbContext.LabReportTemplates
                              join pat in labDbContext.Patients on 1 equals 1
                              join req in labDbContext.Requisitions on pat.PatientId equals req.PatientId
                              join labtest in labDbContext.LabTestComponentResults on req.RequisitionId equals labtest.RequisitionId
                              join user in labDbContext.Employee on currentUser equals user.EmployeeId
                              //below is equivalent syntax as LEFT JOIN. needed since providerid could be null in some cases.
                              join employee in labDbContext.Employee on req.ProviderId equals employee.EmployeeId into emptemp
                              from e in emptemp.DefaultIfEmpty()
                              where temp.ReportTemplateID == templateId && pat.PatientId == patientId && labtest.LabReportId == labReportId

                              select new
            {
                TemplateName = temp.ReportTemplateShortName,
                TemplateId = temp.ReportTemplateID,
                PatientCode = pat.PatientCode,
                FirstName = pat.FirstName,
                LastName = pat.LastName,
                MiddleName = pat.MiddleName,
                HospitalNo = pat.PatientCode,

                Age = pat.Age,
                SampleCreatedOn = req.SampleCreatedOn,
                LabNo = req.SampleCode,
                Comments = (string.IsNullOrEmpty(req.Comments) ? "" : req.Comments),
                Sex = pat.Gender,
                CreatedBy = user.LongSignature,
                // CreatedBy = (string.IsNullOrEmpty(user.Salutation) ? "" : user.Salutation + ". ") + user.FirstName + " " + (string.IsNullOrEmpty(user.MiddleName) ? "" : user.MiddleName + " ") + user.LastName + "<w:br/>" + (string.IsNullOrEmpty(user.MedCertificationNo) ? "" : user.MedCertificationNo),
                // ReferredBy = (string.IsNullOrEmpty(e.Salutation) ? "" : e.Salutation + ". ") + e.FirstName + " " + (string.IsNullOrEmpty(e.MiddleName) ? "" : e.MiddleName + " ") + e.LastName,
                ReferredBy = e.LongSignature,
                PatientId = pat.PatientId,
                Tests = (from req in labDbContext.Requisitions
                         where req.PatientId == pat.PatientId
                         join test in labDbContext.LabTests on req.LabTestId equals test.LabTestId
                         join result in labDbContext.LabTestComponentResults on req.RequisitionId equals result.RequisitionId
                         //where result.IsPrint == false && req.OrderStatus == "final" &&
                         where req.OrderStatus == "final" && test.ReportTemplateId == templateId && result.LabReportId == labReportId
                         orderby test.LabSequence ascending
                         group req by new
                {
                    test.LabTestName,
                    req.RequisitionId,
                    test.LabTestId,
                    test.LabSequence
                } into grp

                         select new
                {
                    TestName = grp.Key.LabTestName,
                    RequisitionId = grp.Key.RequisitionId,
                    TestId = grp.Key.LabTestId,
                    Labsequence = grp.Key.LabSequence,
                    Components = (
                        from res in labDbContext.LabTestComponentResults
                        where res.RequisitionId == grp.Key.RequisitionId
                        select new
                    {
                        ComponentName = res.ComponentName,
                        Value = res.Value,
                        Unit = res.Unit,
                        Range = res.Range,
                        Remarks = res.Remarks,
                        //IsPrint = res.IsPrint,
                        CreatedOn = res.CreatedOn,
                        Method = res.Method,
                        IsNegativeResult = res.IsNegativeResult,
                        IsAbnormal = res.IsAbnormal
                    }).ToList()
                } into final
                         orderby final.Labsequence ascending
                         select final
                         ).ToList()
            }).FirstOrDefault();

            //mapping the data
            PatTemplateResult      patTemplateResult = new PatTemplateResult();
            LabReportTemplateModel template          = new LabReportTemplateModel();

            template.ReportTemplateShortName = viewReport.TemplateName;

            patTemplateResult.PatientInfo.PatientName = viewReport.FirstName + " " + (string.IsNullOrEmpty(viewReport.MiddleName) ? "" : viewReport.MiddleName + " ") + viewReport.LastName + " (" + viewReport.HospitalNo + ")";
            patTemplateResult.PatientInfo.Age         = viewReport.Age;
            patTemplateResult.PatientInfo.Sex         = viewReport.Sex;
            patTemplateResult.PatientInfo.ReferredBy  = viewReport.ReferredBy;
            //new format for labNo = ddMMYY-SampleCode -- sud:15Dec2017
            //new format for labNo = yyMMdd-SampleCode -- ashim:15Dec2017
            string sampleDate = viewReport.SampleCreatedOn != null?viewReport.SampleCreatedOn.Value.ToString("yyMMdd") + "-" : "";

            patTemplateResult.PatientInfo.LabNo = sampleDate + viewReport.LabNo.ToString();

            patTemplateResult.PatientInfo.CreatedBy = viewReport.CreatedBy;
            if (patTemplateResult.PatientInfo.CreatedBy == "………………………… , , Mr. H.B. Thapa ,B.Sc.MLT-PGIMER(CHD)  ,Senior Medical Lab.Technologist ,NHPC NO: A-96" || patTemplateResult.PatientInfo.CreatedBy == "………………………… , , Mr. Mani Ram Mahato ,B.Sc.MLT(TU) ,Medical Lab.Technologist ,NHPC NO: A-1135MLT")
            {
                patTemplateResult.PatientInfo.CreatedBy = " ";
            }
            else
            {
                patTemplateResult.PatientInfo.CreatedBy = viewReport.CreatedBy;
            }

            patTemplateResult.PatientInfo.Date     = System.DateTime.Now.ToString("dd-MM-yyyy");
            patTemplateResult.PatientInfo.Comments = string.IsNullOrEmpty(viewReport.Comments) ? "" : viewReport.Comments;

            patTemplateResult.tableInfo.TablePlaceHolder = "ReportTable";
            //In this viewreport we have tests and inside of the tests we have its components ...
            //we are storing testname --from tests and componentName,range,unit,value and method --- from Components
            //first--> we are create a loop of od tests and ---inside that we are created an object of test class and adding testname to the property of that test
            //second--> in second loop(the loop is of component inside the tests)--inside that loop we are creating object component class aand assiging its porperties
            // and component is added to test object each time ...
            // and in the end of the first loop we are addidnf the test to the patTemplateResult object..

            bool isNegResult = viewReport.Tests.SelectMany(a => a.Components)
                               .Where(a => a.IsNegativeResult.HasValue && a.IsNegativeResult.Value).Count() > 0;

            if (isNegResult)
            {
                patTemplateResult.PatientInfo.Comments = viewReport.Tests[0].Components[0].Remarks;
            }

            if (viewReport.Tests.Count != 0)
            {
                for (var i = 0; i < viewReport.Tests.Count; i++)
                {
                    Test test = new Test();
                    test.TestName = viewReport.Tests[i].TestName;
                    for (var j = 0; j < viewReport.Tests[i].Components.Count; j++)
                    {
                        ComponentResult result = new ComponentResult()
                        {
                            ComponentName = viewReport.Tests[i].Components[j].ComponentName,
                            Unit          = viewReport.Tests[i].Components[j].Unit,
                            Range         = viewReport.Tests[i].Components[j].Range,
                            Value         = viewReport.Tests[i].Components[j].Value,
                            Method        = viewReport.Tests[i].Components[j].Method,
                            Remarks       = viewReport.Tests[i].Components[j].Remarks,
                            IsAbnormal    = viewReport.Tests[i].Components[j].IsAbnormal
                        };

                        test.Result.Add(result);
                    }
                    patTemplateResult.tableInfo.Tests.Add(test);
                }
            }
            //adding the dictionaryInfo ----->in this key is the placeholder and value is actual value of the place holder...
            patTemplateResult.DictionaryInfo.Add("PatientName", patTemplateResult.PatientInfo.PatientName);
            patTemplateResult.DictionaryInfo.Add("Age", patTemplateResult.PatientInfo.Age);
            patTemplateResult.DictionaryInfo.Add("Sex", patTemplateResult.PatientInfo.Sex);
            patTemplateResult.DictionaryInfo.Add("ReferredBy", patTemplateResult.PatientInfo.ReferredBy);
            patTemplateResult.DictionaryInfo.Add("CreatedBy", patTemplateResult.PatientInfo.CreatedBy);
            patTemplateResult.DictionaryInfo.Add("LabNo", patTemplateResult.PatientInfo.LabNo.ToString());
            patTemplateResult.DictionaryInfo.Add("Date", patTemplateResult.PatientInfo.Date);
            patTemplateResult.DictionaryInfo.Add("Comments", patTemplateResult.PatientInfo.Comments);

            LabReportExport labReportExport = new LabReportExport(connString, _highlightAbnormalLabResult);
            var             memStream       = new MemoryStream();

            string filename = labReportExport.GetReportToExport(template, isNegResult, patTemplateResult, this.labTemplateFolder, this._highlightAbnormalLabResult);

            return(new FileStreamResult(new
                                        FileStream(filename, FileMode.Open), "application/msword"));
        }