Пример #1
0
        public DataPage <BSOInfo> BSO_Find(
            BSOSearchCriteria criteria,
            List <SortCriteria <BSOSortField> > sortCriteria,
            PageRequest pageRequest)
        {
            List <SqlParameter> parameters = new List <SqlParameter>();

            parameters.AddInputParameter("@TemporaryPolicyNumberFrom", SqlDbType.NVarChar, criteria.TemporaryPolicyNumberFrom);
            parameters.AddInputParameter("@TemporaryPolicyNumberTo", SqlDbType.NVarChar, criteria.TemporaryPolicyNumberTo);
            parameters.AddInputParameter("@PolicyPartyNumber", SqlDbType.NVarChar, criteria.PolicyPartyNumber);
            parameters.AddInputParameter("@StatusId", SqlDbType.BigInt, criteria.StatusId);
            parameters.AddInputParameter("@ResponsibleID", SqlDbType.BigInt, criteria.ResponsibleID);
            parameters.AddInputParameter("@StatusDateFrom", SqlDbType.Date, criteria.StatusDateFrom);
            parameters.AddInputParameter("@StatusDateTo", SqlDbType.Date, criteria.StatusDateTo);
            parameters.AddInputParameter("@ChangeDateFrom", SqlDbType.DateTime, criteria.ChangeDateFrom);
            parameters.AddInputParameter("@ChangeDateTo", SqlDbType.DateTime, criteria.ChangeDateTo);

            parameters.AddInputParameter("@DeliveryCenterIds", SqlDbType.Structured, DaoHelper.GetObjectIds(criteria.DeliveryCenterIds));
            parameters.AddInputParameter("@DeliveryPointIds", SqlDbType.Structured, DaoHelper.GetObjectIds(criteria.DeliveryPointIds));
            //parameters.AddInputParameter("@ResponsibleIDs", SqlDbType.Structured, DaoHelper.GetObjectIds(criteria.ResponsibleIDs));

            SqlParameter totalCountParameter = parameters.AddOutputParameter("@total_count", SqlDbType.Int);

            parameters.AddInputParameter("@sort_criteria", SqlDbType.Structured, DaoHelper.GetSortFieldsTable(sortCriteria));
            parameters.AddInputParameter("@Page_size", SqlDbType.Int, pageRequest.PageSize);
            parameters.AddInputParameter("@Page_number", SqlDbType.Int, pageRequest.PageNumber);

            List <BSOInfo> bsos = Execute_GetList(BSOInfoMaterializer.Instance, "BSO_Find", parameters);

            return(DaoHelper.GetDataPage(bsos, totalCountParameter, pageRequest));
        }
Пример #2
0
        public ActionResult Index(BSOListModel bsoListModel, string sortField)
        {
            bsoListModel.SortField = sortField;
            bsoListModel.SortOrder = bsoListModel.SortOrder == "ASC" ? "DESC" : "ASC";

            if (Role.Registrator.Id == Role.GetRealRole(CurrentUser).Id)
            {
                bsoListModel.SearchCriteriaModel.DeliveryCenterIds = new List <long>()
                {
                    CurrentUser.Department.Id
                };
                bsoListModel.SearchCriteriaModel.DeliveryPointIds = new List <long>()
                {
                    CurrentUser.DeliveryPoint.Id
                };
            }

            if (Role.ResponsibleBSO.Id == Role.GetRealRole(CurrentUser).Id)
            {
                bsoListModel.SearchCriteriaModel.ResponsibleID = CurrentUser.Id;
            }

            BSOSearchCriteria criteria = bsoListModel.SearchCriteriaModel.GetBSOSearchCriteria();
            List <SortCriteria <BSOSortField> > sortList = new List <SortCriteria <BSOSortField> >();

            if (!string.IsNullOrEmpty(bsoListModel.SortField))
            {
                SortCriteria <BSOSortField> temp = new SortCriteria <BSOSortField>();
                temp.SortField = (BSOSortField)long.Parse(bsoListModel.SortField);
                temp.SortOrder = (SortOrder)((bsoListModel.SortOrder == "ASC") ? 1 : 0);
                sortList.Add(temp);
            }
            DataPage <BSOInfo> bsos = bsoBusinessLogic.BSO_Find(
                criteria,
                sortList,
                new PageRequest()
            {
                PageNumber = bsoListModel.PageNumber, PageSize = bsoListModel.PageSize
            });
            BSOListModel model = new BSOListModel()
            {
                Items = bsos.Data
                        .Select(item => new BSOBaseInfoModel(item)),
                SearchCriteriaModel = new BSOSearchCriteriaModel(
                    criteria),
                PageNumber = bsoListModel.PageNumber,
                PageSize   = bsoListModel.PageSize,
                TotalCount = bsos.TotalCount,
                SortField  = bsoListModel.SortField,
                SortOrder  = bsoListModel.SortOrder,
            };

            model.GetAvailableBSOStatus(bsoListModel.SearchCriteriaModel.StatusId, true);
            model.SearchCriteriaModel.NewStatusDate = DateTime.Now;
            return(View(model));
        }
Пример #3
0
 public BSOSearchCriteriaModel(BSOSearchCriteria criteria)
 {
     this.TemporaryPolicyNumberFrom = criteria.TemporaryPolicyNumberFrom;
     this.TemporaryPolicyNumberTo   = criteria.TemporaryPolicyNumberTo;
     this.PolicyPartyNumber         = criteria.PolicyPartyNumber;
     this.StatusId           = criteria.StatusId;
     this.ResponsibleID      = criteria.ResponsibleID;
     this.StatusDateFrom     = criteria.StatusDateFrom;
     this.StatusDateTo       = criteria.StatusDateTo;
     this.DeliveryCenterIds  = criteria.DeliveryCenterIds;
     this.DeliveryPointIds   = criteria.DeliveryPointIds;
     this.validator          = new BSOSearchCriteriaModelValidator();
     this.CurrentStatusId    = CurrentStatusId;
     this.NewDeliveryPointId = NewDeliveryPointId;
     this.NewResponsibleID   = NewResponsibleID;
     this.ChangeDateFrom     = ChangeDateFrom;
     this.ChangeDateTo       = ChangeDateTo;
 }
Пример #4
0
        public ActionResult GetBSOFailForm13(BSOFailForm13Model model)
        {
            BSOListModel bsoListModel = new BSOListModel();

            bsoListModel.SearchCriteriaModel.StatusDateFrom    = model.DateFrom;
            bsoListModel.SearchCriteriaModel.StatusDateTo      = model.DateTo;
            bsoListModel.SearchCriteriaModel.DeliveryCenterIds = new List <long>()
            {
                CurrentUser.Department.Id
            };
            bsoListModel.SearchCriteriaModel.StatusId = (long)ListBSOStatusID.FailOnResponsible;
            BSOSearchCriteria criteria = bsoListModel.SearchCriteriaModel.GetBSOSearchCriteria();
            List <BSOInfo>    bsos     = bsoBusinessLogic.BSO_Find(
                criteria,
                new List <SortCriteria <BSOSortField> >(),
                new PageRequest()
            {
                PageNumber = 1, PageSize = int.MaxValue
            }).Data;

            criteria.StatusId = (long)ListBSOStatusID.FailGotoStorage;
            bsos.AddRange(bsoBusinessLogic.BSO_Find(
                              criteria,
                              new List <SortCriteria <BSOSortField> >(),
                              new PageRequest()
            {
                PageNumber = 1, PageSize = int.MaxValue
            }).Data);

            criteria.StatusId = (long)ListBSOStatusID.FailOnStorage;
            bsos.AddRange(bsoBusinessLogic.BSO_Find(
                              criteria,
                              new List <SortCriteria <BSOSortField> >(),
                              new PageRequest()
            {
                PageNumber = 1, PageSize = int.MaxValue
            }).Data);

            BSOFailForm13 printedForm = new BSOFailForm13(bsos, model.DateFrom, model.DateTo, CurrentUser.DepartmentDisplayName, CurrentUser.Fullname);

            return(File(printedForm.GetExcel(),
                        System.Net.Mime.MediaTypeNames.Application.Octet, string.Format("Акт передачи испорченных бланков БСО (временных свидетельств). Форма №13.xls")));
        }
Пример #5
0
        public BSOSearchCriteria GetBSOSearchCriteria()
        {
            BSOSearchCriteria criteria = new BSOSearchCriteria()
            {
                TemporaryPolicyNumberFrom = this.TemporaryPolicyNumberFrom,
                TemporaryPolicyNumberTo   = this.TemporaryPolicyNumberTo,
                PolicyPartyNumber         = this.PolicyPartyNumber,
                StatusId          = this.StatusId == 0 ? new Nullable <long>() : this.StatusId,
                StatusDateFrom    = this.StatusDateFrom,
                StatusDateTo      = this.StatusDateTo,
                DeliveryCenterIds = DeliveryCenterIds,
                DeliveryPointIds  = DeliveryPointIds,
                ResponsibleID     = this.ResponsibleID == 0 ? new Nullable <long>() : this.ResponsibleID,
                ChangeDateFrom    = this.ChangeDateFrom,
                ChangeDateTo      = this.ChangeDateTo
            };

            return(criteria);
        }
Пример #6
0
        public DataPage <BSOInfo> BSO_Find(
            BSOSearchCriteria criteria,
            List <SortCriteria <BSOSortField> > sortCriteria,
            PageRequest pageRequest)
        {
            if (criteria == null)
            {
                throw new ArgumentNullException("criteria can't be null");
            }

            if (sortCriteria == null)
            {
                throw new ArgumentNullException("sortCriteria can't be null");
            }

            if (pageRequest == null)
            {
                throw new ArgumentNullException("pageRequest can't be null");
            }
            return(BSODao.Instance.BSO_Find(criteria, sortCriteria, pageRequest));
        }
Пример #7
0
        public ActionResult GetBSOInvoiceS(BSOListModel model)
        {
            List <ReferenceUniversalItem> DP = referenceBusinessLogic.GetUniversalList(Constants.DeliveryPointRef);
            string deliveryPointName         = DP.Where(m => m.Id == model.SearchCriteriaModel.NewDeliveryPointId).FirstOrDefault().Name;
            long?  deliveryPointHeadId       = DP.Where(m => m.Id == model.SearchCriteriaModel.NewDeliveryPointId).FirstOrDefault().DeliveryPointHeadId;
            List <SelectListItem> Users      = ReferencesProvider.GetUsers();
            string fio;

            if (deliveryPointHeadId != null)
            {
                fio = Users.Where(a => a.Value == deliveryPointHeadId.ToString()).Select(b => b.Text).FirstOrDefault();
            }
            else
            {
                fio = CurrentUser.Fullname;
            }

            model.SearchCriteriaModel.StatusId         = model.SearchCriteriaModel.CurrentStatusId;
            model.SearchCriteriaModel.DeliveryPointIds = new List <long>();
            model.SearchCriteriaModel.DeliveryPointIds.Add(model.SearchCriteriaModel.NewDeliveryPointId.Value);
            BSOSearchCriteria criteria = model.SearchCriteriaModel.GetBSOSearchCriteria();
            List <BSOInfo>    bsos     = bsoBusinessLogic.BSO_Find(
                criteria,
                new List <SortCriteria <BSOSortField> >(),
                new PageRequest()
            {
                PageNumber = 1, PageSize = int.MaxValue
            }).Data;
            List <string> listBsoNumber = new List <string>();

            foreach (var elem in bsos)
            {
                listBsoNumber.Add(elem.TemporaryPolicyNumber);
            }
            BSOInvoice printedForm = new BSOInvoice(listBsoNumber, fio, deliveryPointName);

            return(File(printedForm.GetExcel(),
                        System.Net.Mime.MediaTypeNames.Application.Octet, string.Format("Накладная БСО (ВС).xls")));
        }
Пример #8
0
        public ActionResult MassChanges(BSOListModel bsoListModel)
        {
            long     newStatus      = (long)bsoListModel.SearchCriteriaModel.CurrentStatusId;
            long?    newDelivery    = bsoListModel.SearchCriteriaModel.NewDeliveryPointId;
            long?    newResponsible = bsoListModel.SearchCriteriaModel.NewResponsibleID;
            DateTime?newStatusDate  = bsoListModel.SearchCriteriaModel.NewStatusDate;

            long countPrintBso = 0;

            //Регистратор не может изменить 'Точку выдачи' и 'Ответственного'
            if (Role.Registrator.Id == Role.GetRealRole(CurrentUser).Id)
            {
                bsoListModel.SearchCriteriaModel.NewDeliveryPointId = CurrentUser.DeliveryPoint.Id;
                newDelivery = CurrentUser.DeliveryPoint.Id;
                bsoListModel.SearchCriteriaModel.NewResponsibleID = bsoListModel.SearchCriteriaModel.ResponsibleID;
                newResponsible = bsoListModel.SearchCriteriaModel.ResponsibleID;
                bsoListModel.SearchCriteriaModel.Messages.Add("В роли Регистратор, вы не можете изменить Ответственного или Точку Выдачи");
            }

            //Ответственный не может изменить 'Ответственного'
            if (Role.ResponsibleBSO.Id == Role.GetRealRole(CurrentUser).Id &&
                (bsoListModel.SearchCriteriaModel.NewResponsibleID != bsoListModel.SearchCriteriaModel.ResponsibleID))
            {
                bsoListModel.SearchCriteriaModel.NewResponsibleID = bsoListModel.SearchCriteriaModel.ResponsibleID;
                newResponsible = bsoListModel.SearchCriteriaModel.ResponsibleID;
                bsoListModel.SearchCriteriaModel.Messages.Add("В роли Ответственного, вы не можете изменить 'Ответственного'");
            }

            BSOSearchCriteria oldCriteria = bsoListModel.SearchCriteriaModel.GetBSOSearchCriteria();

            bsoListModel.SearchCriteriaModel.Validate(new ModelValidationContext()
            {
                currenUser = CurrentUser
            });
            bsoListModel.SearchCriteriaModel.IsSuccessfullySaved = bsoListModel.SearchCriteriaModel.IsValid();
            if (Request.IsAjaxRequest())
            {
                if (bsoListModel.SearchCriteriaModel.IsValid())
                {
                    BSOSearchCriteria  criteria = bsoListModel.SearchCriteriaModel.GetBSOSearchCriteria();
                    DataPage <BSOInfo> listBso  = bsoBusinessLogic.BSO_Find(
                        criteria,
                        new List <SortCriteria <BSOSortField> >(),
                        new PageRequest()
                    {
                        PageNumber = bsoListModel.PageNumber, PageSize = int.MaxValue
                    });

                    BSOSaveDataModel bsoSaveDataModel = new BSOSaveDataModel()
                    {
                        StatusId          = newStatus,
                        ResponsibleID     = newResponsible,
                        PolicyPartyNumber = bsoListModel.SearchCriteriaModel.PolicyPartyNumber,
                        DeliveryPointId   = newDelivery,
                        UserId            = CurrentUser.Id,
                        Comment           = string.Format("Массовая смена статуса")
                    };

                    if (listBso.Count == 0)
                    {
                        bsoListModel.SearchCriteriaModel.IsSuccessfullySaved = false;
                    }
                    foreach (var b in listBso)
                    {
                        //если не указана новая точка выдачи, то сохраняем прежную
                        //если указана - записываем новую
                        if (newDelivery == null)
                        {
                            bsoSaveDataModel.DeliveryPointId = b.DeliveryPointId;
                        }
                        else
                        {
                            bsoSaveDataModel.DeliveryPointId = newDelivery;
                        }

                        //если не указан новый ответственный, то сохраняем прежнего
                        //если указан - записываем нового
                        if (newResponsible == null)
                        {
                            bsoSaveDataModel.ResponsibleID = b.ResponsibleID;
                        }
                        else
                        {
                            bsoSaveDataModel.ResponsibleID = newResponsible;
                        }

                        //если не указана новая дата статуса, то сохраняем прежную
                        //если указан - записываем новую
                        if (newStatusDate == null)
                        {
                            bsoSaveDataModel.StatusDate = b.StatusDate;
                        }
                        else
                        {
                            bsoSaveDataModel.StatusDate = newStatusDate;
                        }

                        bsoSaveDataModel.Id = b.Id;
                        BSO.SaveData save = bsoSaveDataModel.GetBSOSaveData();
                        bsoBusinessLogic.BSO_Set(save);
                    }
                    countPrintBso = listBso.Count;
                }
                else
                {
                    //nothing
                }
            }
            else
            {
                return(RedirectToAction("Index", "BSO"));
            }

            DataPage <BSOInfo> bsos = bsoBusinessLogic.BSO_Find(
                oldCriteria,
                new List <SortCriteria <BSOSortField> >(),
                new PageRequest()
            {
                PageNumber = bsoListModel.PageNumber, PageSize = bsoListModel.PageSize
            });
            BSOListModel model = new BSOListModel()
            {
                Items = bsos.Data.Select(item => new BSOBaseInfoModel(item)),
                SearchCriteriaModel = new BSOSearchCriteriaModel(oldCriteria),
                PageNumber          = bsoListModel.PageNumber,
                PageSize            = bsoListModel.PageSize,
                TotalCount          = bsos.TotalCount
            };

            model.SearchCriteriaModel.Messages.AddRange(bsoListModel.SearchCriteriaModel.Messages);
            model.SearchCriteriaModel.CurrentStatusId     = newStatus;
            model.SearchCriteriaModel.NewDeliveryPointId  = newDelivery;
            model.SearchCriteriaModel.NewResponsibleID    = newResponsible;
            model.SearchCriteriaModel.IsSuccessfullySaved = bsoListModel.SearchCriteriaModel.IsSuccessfullySaved;
            model.GetAvailableBSOStatus(bsoListModel.SearchCriteriaModel.StatusId, true);
            //печатаем отчет, если статус изменился: На точке
            if (model.SearchCriteriaModel.CurrentStatusId == (long)ListBSOStatusID.OnDelivery && model.SearchCriteriaModel.IsSuccessfullySaved.Value)
            {
                model.FlagPrintReport = countPrintBso;
            }
            else
            {
                model.FlagPrintReport = 0;
            }
            return(PartialView("MassChanges", model));
        }
Пример #9
0
        public ActionResult GetBSOReportForm10Full(BSOReportForm10FullModel model)
        {
            string       delivery     = string.Empty;
            BSOListModel bsoListModel = new BSOListModel();

            bsoListModel.SearchCriteriaModel.StatusDateFrom = model.DateForm10FullFrom;
            bsoListModel.SearchCriteriaModel.StatusDateTo   = model.DateForm10FullTo;

            List <string> ListDelivery = new List <string>();
            List <ReferenceUniversalItem> ListDeliveryPointUniversal = referenceBusinessLogic.GetUniversalList(Constants.DeliveryPointRef);
            List <DeliveryCenter>         listDeliveryCenter         = referenceBusinessLogic.GetDeliveryCenterList();

            //для Администраторов ограничений по точкам - нет
            if (Role.Administrator.Id == Role.GetRealRole(CurrentUser).Id || Role.AdministratorBSO.Id == Role.GetRealRole(CurrentUser).Id)
            {
                if (model.DeliveryPointIds.Count > 0)
                {
                    bsoListModel.SearchCriteriaModel.DeliveryPointIds = model.DeliveryPointIds;
                    foreach (var item in model.DeliveryPointIds)
                    {
                        delivery = listDeliveryCenter.Where(a => a.Id == ListDeliveryPointUniversal.Where(b => b.Id == item).Select(c => c.DeliveryCenterId).FirstOrDefault()).Select(d => d.DisplayName).FirstOrDefault();
                        ListDelivery.Add(delivery);
                    }
                }
                else
                {
                    delivery = "Все точки";
                }
            }
            else
            {   //для ответственного
                if (Role.ResponsibleBSO == Role.GetRealRole(CurrentUser))
                {
                    if (model.DeliveryPointIds.Count > 0)
                    {
                        bsoListModel.SearchCriteriaModel.DeliveryPointIds = model.DeliveryPointIds;
                    }
                    else
                    {//все точки для ответственного
                        model.DeliveryPoints = ReferencesProvider.GetDeliveryPointsForResponsibleBSO(CurrentUser.Id, false);
                        foreach (var item in model.DeliveryPoints)
                        {
                            if (item.Value != "")
                            {
                                model.DeliveryPointIds.Add(long.Parse(item.Value));
                            }
                        }
                        bsoListModel.SearchCriteriaModel.DeliveryPointIds = model.DeliveryPointIds;
                    }
                    foreach (var item in model.DeliveryPointIds)
                    {
                        delivery = listDeliveryCenter.Where(a => a.Id == ListDeliveryPointUniversal.Where(b => b.Id == item).Select(c => c.DeliveryCenterId).FirstOrDefault()).Select(d => d.DisplayName).FirstOrDefault();
                        ListDelivery.Add(delivery);
                    }
                }
                else
                {
                    //для всех остальных, только по их собственной точке
                    bsoListModel.SearchCriteriaModel.DeliveryPointIds = new List <long>()
                    {
                        CurrentUser.DeliveryPoint.Id
                    };
                    model.DeliveryPointIds = new List <long>()
                    {
                        CurrentUser.DeliveryPoint.Id
                    };
                    delivery = listDeliveryCenter.Where(a => a.Id == ListDeliveryPointUniversal.Where(b => b.Id == CurrentUser.DeliveryPoint.Id).Select(c => c.DeliveryCenterId).FirstOrDefault()).Select(d => d.DisplayName).FirstOrDefault();
                    ListDelivery.Add(delivery);
                }
            }
            BSOSearchCriteria criteria           = bsoListModel.SearchCriteriaModel.GetBSOSearchCriteria();
            List <BSOInfo>    listBSOinRangeDate = bsoBusinessLogic.BSO_Find(
                criteria,
                new List <SortCriteria <BSOSortField> >(),
                new PageRequest()
            {
                PageNumber = 1, PageSize = int.MaxValue
            }).Data;

            List <BSOHistoryItem> listHistory = new List <BSOHistoryItem>();

            if (listBSOinRangeDate.Count > 0)
            {
                List <long> listBSO_IDs = listBSOinRangeDate.Select(a => a.Id).ToList();
                listHistory = bsoBusinessLogic.BSO_GetListHistory(new DateTime(2000, 1, 1), (DateTime)bsoListModel.SearchCriteriaModel.StatusDateTo, listBSO_IDs);
            }

            List <BSOInfo> listBSOBeforeDate = bsoBusinessLogic.BSO_Find(
                new BSOSearchCriteria()
            {
                StatusDateTo     = bsoListModel.SearchCriteriaModel.StatusDateFrom,
                DeliveryPointIds = bsoListModel.SearchCriteriaModel.DeliveryPointIds
            },
                new List <SortCriteria <BSOSortField> >(),
                new PageRequest()
            {
                PageNumber = 1, PageSize = int.MaxValue
            }).Data;

            List <BSOInfo> listBSOAllDate = bsoBusinessLogic.BSO_Find(
                new BSOSearchCriteria()
            {
                StatusDateTo     = bsoListModel.SearchCriteriaModel.StatusDateTo,
                DeliveryPointIds = bsoListModel.SearchCriteriaModel.DeliveryPointIds
            },
                new List <SortCriteria <BSOSortField> >(),
                new PageRequest()
            {
                PageNumber = 1, PageSize = int.MaxValue
            }).Data;


            //фильтруем по DeliveryPointId
            //if (dicDeliveryPoint.Count > 0)
            //{
            //    listHistory = listHistory.Where(a => dicDeliveryPoint.Keys.Contains(a.DeliveryPointId)).ToList();
            //}

            BSOReportForm10Full printedForm = new BSOReportForm10Full(listHistory, listBSOBeforeDate, listBSOinRangeDate, listBSOAllDate, ListDelivery.Distinct().ToList(), model.DateForm10FullFrom, model.DateForm10FullTo, CurrentUser);

            return(File(printedForm.GetExcel(),
                        System.Net.Mime.MediaTypeNames.Application.Octet, string.Format("Отчет по движению ВС с группировкой по пулам номеров БСО. Форма №10.xls")));
        }
Пример #10
0
        public ActionResult GetBSOReportForm10(BSOReportForm10Model model)
        {
            string       NameDeliveryPoint = string.Empty;
            BSOListModel bsoListModel      = new BSOListModel();

            bsoListModel.SearchCriteriaModel.StatusDateFrom = model.DateForm10From;
            bsoListModel.SearchCriteriaModel.StatusDateTo   = model.DateForm10To;
            //для Администраторов ограничений по точкам - нет
            if (Role.Administrator.Id == Role.GetRealRole(CurrentUser).Id || Role.AdministratorBSO.Id == Role.GetRealRole(CurrentUser).Id)
            {
                if (model.DeliveryPointIds.Count > 0)
                {
                    bsoListModel.SearchCriteriaModel.DeliveryPointIds = model.DeliveryPointIds;
                    foreach (var item in model.DeliveryPointIds)
                    {
                        NameDeliveryPoint = NameDeliveryPoint + ", " + model.DeliveryPoints.Where(a => a.Value == item.ToString()).Select(b => b.Text).FirstOrDefault();
                    }
                    NameDeliveryPoint = NameDeliveryPoint.Trim(',', ' ');
                }
                else
                {
                    NameDeliveryPoint = "Все точки";
                }
            }
            else
            {   //для ответственного
                if (Role.ResponsibleBSO == Role.GetRealRole(CurrentUser))
                {
                    if (model.DeliveryPointIds.Count > 0)
                    {
                        bsoListModel.SearchCriteriaModel.DeliveryPointIds = model.DeliveryPointIds;
                    }
                    else
                    {//все точки для ответственного
                        model.DeliveryPoints = ReferencesProvider.GetDeliveryPointsForResponsibleBSO(CurrentUser.Id, false);
                        foreach (var item in model.DeliveryPoints)
                        {
                            if (item.Value != "")
                            {
                                model.DeliveryPointIds.Add(long.Parse(item.Value));
                            }
                        }
                        bsoListModel.SearchCriteriaModel.DeliveryPointIds = model.DeliveryPointIds;
                    }

                    foreach (var item in model.DeliveryPointIds)
                    {
                        NameDeliveryPoint = NameDeliveryPoint + ", " + model.DeliveryPoints.Where(a => a.Value == item.ToString()).Select(b => b.Text).FirstOrDefault();
                    }
                    NameDeliveryPoint = NameDeliveryPoint.Trim(',', ' ');
                }
                else
                {
                    //для всех остальных, только по их собственной точке
                    bsoListModel.SearchCriteriaModel.DeliveryPointIds = new List <long>()
                    {
                        CurrentUser.DeliveryPoint.Id
                    };
                    model.DeliveryPointIds = new List <long>()
                    {
                        CurrentUser.DeliveryPoint.Id
                    };
                    NameDeliveryPoint = model.DeliveryPoints.Where(a => a.Value == model.DeliveryPointIds.FirstOrDefault().ToString()).Select(b => b.Text).FirstOrDefault();
                }
            }
            BSOSearchCriteria criteria = bsoListModel.SearchCriteriaModel.GetBSOSearchCriteria();
            List <BSOInfo>    bsos     = bsoBusinessLogic.BSO_Find(
                criteria,
                new List <SortCriteria <BSOSortField> >(),
                new PageRequest()
            {
                PageNumber = 1, PageSize = int.MaxValue
            }).Data;
            BSOReportForm10 printedForm = new BSOReportForm10(bsos, model.DateForm10From, model.DateForm10To,
                                                              NameDeliveryPoint, CurrentUser.Fullname);

            return(File(printedForm.GetExcel(),
                        System.Net.Mime.MediaTypeNames.Application.Octet, string.Format("Отчет по движению (статусам) временных свидетельств.xls")));
        }