Exemple #1
0
 public static void SaveReport(ReportOrderModel report)
 {
     DbContext.db.ReportOrders.Add(report);
     DbContext.db.Orders.Where(or => or.IdOrder == SecurityContext.IdOrder).FirstOrDefault().StageOrder = 3;
     DbContext.db.Orders.Create();
     DbContext.db.SaveChanges();
 }
        public ReportOrderModel GetOrders(DateTimeOffset start, DateTimeOffset end, int?organisationId, IEnumerable <int> localAdminCustomerUnits = null)
        {
            var requestOrders           = _dbContext.Requests.GetRequestsOrdersForReport(start.Date, end.Date, organisationId, localAdminCustomerUnits);
            var requisitions            = _dbContext.Requisitions.GetRequisitionsForOrdersForReport(start.Date, end.Date, organisationId, localAdminCustomerUnits);
            var complaints              = _dbContext.Complaints.GetComplaintsForOrdersForReport(start.Date, end.Date, organisationId, localAdminCustomerUnits);
            var interpreterLocations    = _dbContext.OrderInterpreterLocation.GetInterpreterLocationsForOrdersForReport(start.Date, end.Date, organisationId, localAdminCustomerUnits);
            var orderRequirements       = _dbContext.OrderRequirements.GetOrderRequirementsForOrdersForReport(start.Date, end.Date, organisationId, localAdminCustomerUnits);
            var orderRequirementAnswers = _dbContext.OrderRequirementRequestAnswer.GetRequirementAnswersForOrdersForReport(start.Date, end.Date, organisationId, localAdminCustomerUnits);
            var competenceRequirements  = _dbContext.OrderCompetenceRequirements.GetOrderCompetencesForOrdersForReport(start.Date, end.Date, organisationId, localAdminCustomerUnits);

            return(ReportOrderModel.GetModelFromOrders(requestOrders, requisitions, complaints, interpreterLocations, orderRequirements, orderRequirementAnswers, competenceRequirements, null, false, false));
        }
        public ReportOrderModel GetDeliveredOrders(DateTimeOffset start, DateTimeOffset end, int?organisationId, IEnumerable <int> localAdminCustomerUnits = null)
        {
            var requestOrders           = _dbContext.Requests.GetDeliveredRequestsWithOrders(start.Date, end.Date, _clock.SwedenNow.DateTime, organisationId, localAdminCustomerUnits);
            var requisitions            = _dbContext.Requisitions.GetRequisitionsForDeliveredOrders(start.Date, end.Date, _clock.SwedenNow.DateTime, organisationId, localAdminCustomerUnits);
            var complaints              = _dbContext.Complaints.GetComplaintsForDeliveredOrders(start.Date, end.Date, _clock.SwedenNow.DateTime, organisationId, localAdminCustomerUnits);
            var interpreterLocations    = _dbContext.OrderInterpreterLocation.GetInterpreterLocationsForDeliveredOrders(start.Date, end.Date, _clock.SwedenNow.DateTime, organisationId, localAdminCustomerUnits);
            var orderRequirements       = _dbContext.OrderRequirements.GetOrderRequirementsForDeliveredOrders(start.Date, end.Date, _clock.SwedenNow.DateTime, organisationId, localAdminCustomerUnits);
            var orderRequirementAnswers = _dbContext.OrderRequirementRequestAnswer.GetRequirementAnswersForDeliveredOrders(start.Date, end.Date, _clock.SwedenNow.DateTime, organisationId, localAdminCustomerUnits);
            var competenceRequirements  = _dbContext.OrderCompetenceRequirements.GetOrderCompetencesForDeliveredOrders(start.Date, end.Date, _clock.SwedenNow.DateTime, organisationId, localAdminCustomerUnits);
            var requestPricerows        = _dbContext.RequestPriceRows.GetRequestPriceRowsForDeliveredOrders(start.Date, end.Date, _clock.SwedenNow.DateTime, organisationId, localAdminCustomerUnits);

            return(ReportOrderModel.GetModelFromOrders(requestOrders, requisitions, complaints, interpreterLocations, orderRequirements, orderRequirementAnswers, competenceRequirements, requestPricerows, false, true));
        }
        public ReportOrderModel GetRequestsForBroker(DateTimeOffset start, DateTimeOffset end, int brokerId)
        {
            var requestOrders           = _dbContext.Requests.GetRequestOrdersForBrokerReport(start.Date, end.Date, brokerId);
            var orderIds                = requestOrders.Select(r => r.OrderId).Distinct().ToList();
            var requisitions            = _dbContext.Requisitions.GetRequisitionsForBrokerReport(start.Date, end.Date, brokerId);
            var complaints              = _dbContext.Complaints.GetComplaintsForBrokerReport(start.Date, end.Date, brokerId);
            var interpreterLocations    = _dbContext.OrderInterpreterLocation.GetInterpreterLocationsByOrderIds(orderIds);
            var orderRequirements       = _dbContext.OrderRequirements.GetOrderRequirementsByOrderIds(orderIds);
            var orderRequirementAnswers = _dbContext.OrderRequirementRequestAnswer.GetRequirementAnswersForBrokerReport(start.Date, end.Date, brokerId);
            var competenceRequirements  = _dbContext.OrderCompetenceRequirements.GetOrderCompetencesByOrderIds(orderIds);

            return(ReportOrderModel.GetModelFromOrders(requestOrders, requisitions, complaints, interpreterLocations, orderRequirements, orderRequirementAnswers, competenceRequirements, null, true, false));
        }
        public static IEnumerable <ReportRow> GetOrderExcelFileRows(ReportOrderModel reportOrder, ReportType reportType)
        {
            var isBroker     = (reportType == ReportType.DeliveredOrdersBrokers || reportType == ReportType.RequestsForBrokers);
            var selectedData = reportOrder?.OrderRequests;

            if (reportType == ReportType.OrdersForCustomer || reportType == ReportType.OrdersForSystemAdministrator)
            {
                var activeRequestIds = reportOrder.OrderRequests.GroupBy(r => r.OrderId).Select(r => r.Max(c => c.RequestId));
                selectedData = reportOrder.OrderRequests.Where(r => activeRequestIds.Contains(r.RequestId));
            }

            return(selectedData
                   .Select(o => new ReportOrderRow
            {
                OrderNumber = o.OrderNumber,
                ReportDate = o.ReportDate,
                BrokerName = o.BrokerName,
                Language = o.Language,
                Region = o.Region,
                AssignmentType = o.AssignmentType.GetDescription(),
                InterpreterCompetenceLevel = (CompetenceAndSpecialistLevel?)o.CompetenceLevel ?? CompetenceAndSpecialistLevel.NoInterpreter,
                InterpreterId = o.InterpreterId,
                ReportPersonToDisplay = o.ReportPerson,
                AssignmentDate = o.AssignmentDate,
                Status = isBroker ? o.RequestStatus.GetDescription() : o.OrderStatus.GetDescription(),
                ReferenceNumber = o.ReferenceNumber,
                Department = o.Department,
                CustomerUnitName = o.CustomerUnitName,
                HasRequisition = reportOrder.HasRequisitions.Contains(o.RequestId),
                HasComplaint = reportOrder.HasComplaints.Contains(o.RequestId),
                CustomerName = o.CustomerName,
                Price = reportOrder.Prices?.SingleOrDefault(r => r.RequestId == o.RequestId).Price ?? 0,
                Dialect = reportOrder.Requirements.Where(r => r.OrderId == o.OrderId && r.RequirementType == RequirementType.Dialect).FirstOrDefault()?.Description ?? string.Empty,
                DialectIsRequirement = reportOrder.Requirements.Where(r => r.OrderId == o.OrderId && r.RequirementType == RequirementType.Dialect).FirstOrDefault()?.IsRequired ?? false,
                FulfilledDialectRequirement = reportOrder.Requirements.Where(r => r.OrderId == o.OrderId && r.RequirementType == RequirementType.Dialect && reportOrder.RequirementAnswers.Any(ra => ra.OrderRequirementId == r.OrderRequirementId && ra.CanSatisfyRequirement && o.RequestId == ra.RequestId)).FirstOrDefault() != null,
                OrderedInterpreterLocation1 = reportOrder.InterpreterLocations.Where(i => i.OrderId == o.OrderId && i.Rank == 1).FirstOrDefault()?.InterpreterLocation.GetDescription() ?? string.Empty,
                OrderedInterpreterLocation2 = reportOrder.InterpreterLocations.Where(i => i.OrderId == o.OrderId && i.Rank == 2).FirstOrDefault()?.InterpreterLocation.GetDescription() ?? string.Empty,
                OrderedInterpreterLocation3 = reportOrder.InterpreterLocations.Where(i => i.OrderId == o.OrderId && i.Rank == 3).FirstOrDefault()?.InterpreterLocation.GetDescription() ?? string.Empty,
                InterpreterLocation = o.InterpreterLocation.HasValue ? ((InterpreterLocation)o.InterpreterLocation.Value).GetDescription() : string.Empty,
                AllowExceedingTravelCost = o.AllowExceedingTravelCost.HasValue ? isBroker ? EnumHelper.Parent <AllowExceedingTravelCost, TrueFalse>(o.AllowExceedingTravelCost.Value).GetDescription() : o.AllowExceedingTravelCost.Value.GetDescription() : string.Empty,
                CompetenceLevelDesired1 = (o.LanguageHasAuthorizedInterpreter && !o.SpecificCompetenceLevelRequired && reportOrder.Competences.Any(ro => ro.OrderId == o.OrderId)) ? reportOrder.Competences.Where(c => c.OrderId == o.OrderId && c.Rank == 1).FirstOrDefault()?.CompetenceLevel.GetDescription() ?? string.Empty : string.Empty,
                CompetenceLevelDesired2 = (o.LanguageHasAuthorizedInterpreter && !o.SpecificCompetenceLevelRequired && reportOrder.Competences.Any(ro => ro.OrderId == o.OrderId)) ? reportOrder.Competences.Where(c => c.OrderId == o.OrderId && c.Rank == 2).FirstOrDefault()?.CompetenceLevel.GetDescription() ?? string.Empty : string.Empty,
                CompetenceLevelRequired1 = (o.LanguageHasAuthorizedInterpreter && o.SpecificCompetenceLevelRequired && reportOrder.Competences.Any(ro => ro.OrderId == o.OrderId)) ? reportOrder.Competences.Where(ro => ro.OrderId == o.OrderId).First().CompetenceLevel.GetDescription() : string.Empty,
                CompetenceLevelRequired2 = (o.LanguageHasAuthorizedInterpreter && o.SpecificCompetenceLevelRequired && reportOrder.Competences.Any(ro => ro.OrderId == o.OrderId) && reportOrder.Competences.Where(ro => ro.OrderId == o.OrderId).Count() > 1) ? reportOrder.Competences.Where(ro => ro.OrderId == o.OrderId).Last().CompetenceLevel.GetDescription() : string.Empty,
                OrderRequirements = reportOrder.Requirements.Where(r => r.OrderId == o.OrderId && r.RequirementType != RequirementType.Dialect && r.IsRequired).Count(),
                OrderDesiredRequirements = reportOrder.Requirements.Where(r => r.OrderId == o.OrderId && r.RequirementType != RequirementType.Dialect && !r.IsRequired).Count(),
                FulfilledOrderDesiredRequirements = reportOrder.Requirements.Where(r => r.RequirementType != RequirementType.Dialect && !r.IsRequired && reportOrder.RequirementAnswers.Any(ra => ra.OrderRequirementId == r.OrderRequirementId && ra.CanSatisfyRequirement && ra.RequestId == o.RequestId)).Count(),
                FulfilledOrderRequirements = reportOrder.Requirements.Where(r => r.RequirementType != RequirementType.Dialect && r.IsRequired && reportOrder.RequirementAnswers.Any(ra => ra.OrderRequirementId == r.OrderRequirementId && ra.CanSatisfyRequirement && ra.RequestId == o.RequestId)).Count()
            }).ToList().OrderBy(row => row.OrderNumber));
        }
        public ReportOrderModel GetDeliveredRequestsForBroker(DateTimeOffset start, DateTimeOffset end, int brokerId)
        {
            var requestOrders           = _dbContext.Requests.GetDeliveredRequestsWithOrders(start.Date, end.Date, _clock.SwedenNow.DateTime, null, null, brokerId);
            var orderIds                = requestOrders.Select(r => r.OrderId).Distinct().ToList();
            var requisitions            = _dbContext.Requisitions.GetRequisitionsForDeliveredOrders(start.Date, end.Date, _clock.SwedenNow.DateTime, null, null, brokerId);
            var complaints              = _dbContext.Complaints.GetComplaintsForDeliveredOrders(start.Date, end.Date, _clock.SwedenNow.DateTime, null, null, brokerId);
            var interpreterLocations    = _dbContext.OrderInterpreterLocation.GetInterpreterLocationsByOrderIds(orderIds);
            var orderRequirements       = _dbContext.OrderRequirements.GetOrderRequirementsByOrderIds(orderIds);
            var orderRequirementAnswers = _dbContext.OrderRequirementRequestAnswer.GetRequirementAnswersForDeliveredOrders(start.Date, end.Date, _clock.SwedenNow.DateTime, null, null, brokerId);
            var competenceRequirements  = _dbContext.OrderCompetenceRequirements.GetOrderCompetencesByOrderIds(orderIds);
            var requestPricerows        = _dbContext.RequestPriceRows.GetRequestPriceRowsForDeliveredOrders(start.Date, end.Date, _clock.SwedenNow.DateTime, null, null, brokerId);

            return(ReportOrderModel.GetModelFromOrders(requestOrders, requisitions, complaints, interpreterLocations, orderRequirements, orderRequirementAnswers, competenceRequirements, requestPricerows, true, true));
        }
        private void CreateReport_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                ReportOrderModel NewReport = new ReportOrderModel();

                NewReport.IdOrder     = SecurityContext.IdOrder;
                NewReport.Description = Description.Text;
                NewReport.Sale        = int.Parse(Sale.Text);

                ReportOrderLogic.SaveReport(NewReport);
                MessageBox.Show("Отчет о заказе успешно сохранен. Заказ успешно выполнен!");

                OrdersListWindow order = new OrdersListWindow();
                order.Show();
                this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }