protected override void OnAfterSaveEntity(TechnicalRequrementsTask task)
 {
     if (TaskIsActual(task))
     {
         var selectedLookup = this.SelectedLookup;
         base.OnAfterSaveEntity(task);
         this.SelectedLookup = selectedLookup;
     }
 }
        public bool OnSaveTechnicalRequarementsTaskServiceCallback(Guid technicalRequarementsTaskId)
        {
            TechnicalRequrementsTask technicalRequrementsTask = _container.Resolve <IUnitOfWork>().Repository <TechnicalRequrementsTask>().GetById(technicalRequarementsTaskId);

            if (this.SyncContainer.PublishWithinAppForCurrentUser <TechnicalRequrementsTask, AfterSaveTechnicalRequrementsTaskEvent>(technicalRequrementsTask))
            {
                return(true);
            }

            return(false);
        }
Пример #3
0
 private string GetTceNumber(TechnicalRequrementsTask requrementsTask)
 {
     try
     {
         return(requrementsTask.PriceCalculations
                .SelectMany(calculation => calculation.PriceCalculationItems.SelectMany(item => item.StructureCosts))
                .Select(structureCost => structureCost.Number)
                .Where(x => string.IsNullOrEmpty(x) == false)
                .Select(x => x.Split(' ').First())
                .Distinct()
                .OrderBy(x => x)
                .ToStringEnum());
     }
     catch (Exception)
     {
         return(string.Empty);
     }
 }
 protected override bool TaskIsActual(TechnicalRequrementsTask technicalRequrementsTask)
 {
     return(true);
 }
Пример #5
0
        protected override bool TaskIsActual(TechnicalRequrementsTask technicalRequrementsTask)
        {
            User manager = technicalRequrementsTask.FrontManager;

            return(manager != null && manager.IsAppCurrentUser());
        }
Пример #6
0
        public TceReportUnit(TechnicalRequrementsTask technicalRequrementsTask, TechnicalRequrements technicalRequrements, IEnumerable <Tender> tenders)
        {
            SalesUnits = technicalRequrements.SalesUnits.ToList();
            var salesUnit = SalesUnits.First();

            _tenders = tenders.ToList();

            OrderInTakeDate = salesUnit.OrderInTakeDate;

            if (technicalRequrementsTask.PriceCalculations.Any())
            {
                TceNumber = GetTceNumber(technicalRequrementsTask);
            }

            TaskOpenDate = technicalRequrementsTask.Start?.Date ?? DateTime.Today.AddYears(10);

            TaskStartDate  = technicalRequrementsTask.Start;
            TaskFinishDate = technicalRequrementsTask.Finish;

            Order = salesUnit.Order?.ToString();

            OrderPositions = SalesUnits.Select(unit => unit.OrderPosition).GetOrderPositions();

            var owners = new List <Company> {
                salesUnit.Facility.OwnerCompany
            };

            owners.AddRange(salesUnit.Facility.OwnerCompany.ParentCompanies().ToList());
            FacilityOwners = owners.ToStringEnum();

            var contragent = salesUnit.Specification?.Contract.Contragent ?? GetTenderWinner() ?? salesUnit.Facility.OwnerCompany;

            Contragent = contragent.ToString();

            Facility = salesUnit.Facility.ToString();

            Product = $"{salesUnit.Product.ProductType} {salesUnit.Product.Designation}";

            Amount = SalesUnits.Count;

            this.OrderInTakeStatus = GetOrderInTakeStatus();

            if (TaskStartDate.HasValue)
            {
                var dates = Offers
                            .Where(offer => offer.Project.Id == salesUnit.Project.Id)
                            .Select(offer => offer.Date)
                            .Where(x => x >= this.TaskStartDate.Value)
                            .ToList();

                if (dates.Any())
                {
                    FirstOfferDate = dates.Min();
                }

                if (FirstOfferDate.HasValue)
                {
                    Term = (FirstOfferDate.Value - TaskStartDate.Value).Days;
                }
            }


            if (salesUnit.IsLoosen)
            {
                CostOfWinner = salesUnit.Cost;
                Cost         = Math.Round(CostOfWinner.Value * (1.0 + _random.Next(5, 20) / 100.0), MidpointRounding.ToEven);

                if (salesUnit.ProductionTerm < GlobalAppProperties.Actual.StandartTermFromStartToEndProduction)
                {
                    LossReason = "Сроки производства";
                }
            }
            else
            {
                Cost = salesUnit.Cost;
            }

            Manager = salesUnit.Project.Manager?.Employee?.Person.ToString();

            BackManager = technicalRequrementsTask.BackManager?.Employee?.Person.ToString();

            RealizationDate = salesUnit.RealizationDateCalculated;


            if (salesUnit.IsLoosen)
            {
                CommonStatus = string.IsNullOrEmpty(Order) ? "Конкурс проигран" : "Заказ аннулирован";
            }
            else if (OrderInTakeDate < DateTime.Today)
            {
                CommonStatus = $"Факт ОИТ {OrderInTakeDate.Year}";
            }
            else if (OrderInTakeDate.Year > DateTime.Today.Year)
            {
                CommonStatus = $"Закупка или тендер перенесены на {OrderInTakeDate.Year} год";
            }

            Producer       = salesUnit.Producer?.ToString() ?? string.Empty;
            ProducerWinner = Producer;
        }
 /// <summary>
 /// Подходит ли задача конкретно этой VM
 /// </summary>
 /// <param name="technicalRequrementsTask">Задача ТСЕ</param>
 /// <returns></returns>
 protected abstract bool TaskIsActual(TechnicalRequrementsTask technicalRequrementsTask);