Exemplo n.º 1
0
 public PrintedFormsModel()
 {
     PartyJournal            = new PartyJournalModel();
     BSOFailForm13           = new BSOFailForm13Model();
     BSOOperativeInformation = new BSOOperativeInformationModel();
     BSOReportForm10         = new BSOReportForm10Model();
     BSOReportForm10Full     = new BSOReportForm10FullModel();
     SMSBaseReport           = new SMSBaseReportModel();
     AllocationBSO           = new AllocationBSOModel();
     BSOMoveReportYear       = new BSOMoveReportYearModel();
     ScenarioForm2           = new ScenarioForm2Model();
     ClientVisitReport       = new ClientVisitReportModel();
     SNILSReport             = new SNILSReportModel();
     StatusReport            = new StatusReportModel();
 }
Exemplo n.º 2
0
        public ActionResult ScenarioForm2(ScenarioForm2Model model)
        {
            ClientVisitSearchCriteria criteria = new ClientVisitSearchCriteria();

            criteria.StatusDateFrom = new DateTime(model.Year, model.MonthID, 1);
            criteria.StetusDateTo   = new DateTime(model.Year, model.MonthID + 1, 1).AddDays(-1);
            List <ClientVisitInfo> clientVisits = clientBusinessLogic.ClientVisit_Find(
                criteria,
                new List <SortCriteria <ClientVisitSortField> >(),
                new PageRequest()
            {
                PageNumber = 1, PageSize = int.MaxValue
            }).Data;

            List <int> listInt = new List <int>(6);

            //Trim Code!
            foreach (var item in clientVisits)
            {
                if (!string.IsNullOrEmpty(item.Scenario.Code))
                {
                    item.Scenario.Code = item.Scenario.Code.Trim();
                }
            }

            var VisitGroup = clientVisits.GroupBy(a => a.VisitGroupId);
            //Количество обращений считается, как количество обращений по сценарию из самой последней заявки предшествующей POK.
            Dictionary <long, string> clearVisitGroup = new Dictionary <long, string>();
            string scenario = string.Empty;

            foreach (var item in VisitGroup)
            {
                if (item.Count() <= 1)
                {
                    clearVisitGroup.Add(item.Key, item.FirstOrDefault().Scenario.Code);
                }
                else //>1
                {
                    var orderItem = item.OrderBy(a => a.Id);
                    scenario = orderItem.FirstOrDefault().Scenario.Code;
                    foreach (ClientVisitInfo element in orderItem)
                    {
                        var s = element.Scenario.Code;

                        if (s == "POK")
                        {
                            break;
                        }
                        else
                        {
                            scenario = s;
                        }
                    }
                    clearVisitGroup.Add(item.Key, scenario);
                }
            }
            //В clearVisitGroup мы получили обращение и код для подсчета количества обращений
            int Visit1     = 0, //кол-во сценариев NB, PI, PRI, PT, PRT, CP
                Visit2     = 0, //CI, CT, RI, RT
                Visit3     = 0, //DP, CR
                otherVisit = 0;

            foreach (var item in clearVisitGroup)
            {
                if (item.Value == "NB" || item.Value == "PI" || item.Value == "PRI" || item.Value == "PT" || item.Value == "PRT" || item.Value == "CP")
                {
                    Visit1++;
                }
                else if (item.Value == "CI" || item.Value == "CT" || item.Value == "RI" || item.Value == "RT")
                {
                    Visit2++;
                }
                else if (item.Value == "DP" || item.Value == "CR")
                {
                    Visit3++;
                }
                else
                {
                    otherVisit++;
                }
            }
            listInt.Add(Visit1); listInt.Add(Visit2); listInt.Add(Visit3);


            int issued1 = 0, issued2 = 0, issued3 = 0, otherIssued = 0;

            foreach (var item in VisitGroup)
            {
                var temp = item.Where(a => a.Scenario.Code == "POK" ||
                                      a.Scenario.Code == "CI" ||
                                      (a.Scenario.Code == "CT" && a.Status.Id == 7 && string.IsNullOrEmpty(a.TemporaryPolicyNumber))).Count();
                if (temp > 0)
                {
                    Client        client  = clientBusinessLogic.Client_Get(CurrentUser, item.FirstOrDefault().ClientId);
                    List <string> listScn = new List <string>();
                    foreach (var visit in client.Visits.OrderBy(a => a.StatusDate))
                    {
                        listScn.Add(string.IsNullOrEmpty(visit.Scenario.Code) ? string.Empty : visit.Scenario.Code.Trim());
                    }

                    listScn.Remove("POK"); listScn.Remove("CI"); listScn.Remove("CT");
                    var code = listScn.LastOrDefault();
                    if (code == "NB" || code == "PI" || code == "PRI" || code == "PT" || code == "PRT" || code == "CP")
                    {
                        issued1++;
                    }
                    else if (code == "CI" || code == "CT" || code == "RI" || code == "RT")
                    {
                        issued2++;
                    }
                    else if (code == "DP" || code == "CR")
                    {
                        issued3++;
                    }
                    else
                    {
                        otherIssued++;
                    }
                }
            }
            listInt.Add(issued1); listInt.Add(issued2); listInt.Add(issued3);

            listInt.Add(otherVisit);
            listInt.Add(otherIssued);

            ScenarioForm2 printedForm = new ScenarioForm2(listInt);
            string        month       = model.Months.Where(a => a.Value == model.MonthID.ToString()).Select(b => b.Text).FirstOrDefault();

            return(File(printedForm.GetExcel(),
                        System.Net.Mime.MediaTypeNames.Application.Octet, string.Format("Отчет по сценариям форма_2 {0} {1}.xls", month, model.Year)));;
        }