{"version":3,"sources":["assets/js/bundle.js"],"names":["OrderCalendarDayController","$scope","$rootScope","$translate","ctrl","this","templateScope","isWeekView","showHours","$doCheck","currentMoment","currentMonth","title","moment","viewDate","instant","format","toUpperCase","join","toggleLeft","date","setDate","getDate","$broadcast","toggleRight","$on","event","OrderCalendarWeekController","dayCalendarObjects","dummyArray","templateScopeOnFirstColumn","updateDayCalendarObjects","push","titleDay","titleNumber","weekday","subtract","i","newDayCalendarObject","add","$onInit","TableController","$filter","keyCodes","controller","undefined","isSelectionEnabled","totalItems","items","length","paginationRange","itemRange","itemRangeBottom","itemRangeTop","currentPage","isCheckAllCheckboxChecked","searchFieldString","filterString","keyCode","lastSortCol","tableHeaderItems","propertyName","sortCol","isSortReversed","getPropertyFromItem","item","hasOwnProperty","toString","reverseSorting","sortingArrowOnClick","tableHeaderName","checkAllCheckboxOnClick","selectAllFiltered","deselectAll","filteredItems","angular","forEach","selected","updateSelectedArray","selectedItems","allSelectedItems","updateTableRange","updateVisibleItems","searchKeyUp","ENTER","$onChanges","FileUploadController","ALLOWED_FILE_EXTENTIONS","inputValidationService","onChanges","data","isMultipleFilesAllowed","files","file","areValidFiles","isValid","isRequired","onSelect","$files","$file","$isValid","bindings","initFileSelectEvent","$","on","numFiles","label","input","log","val","alert","FitlerableDropdownController","dropdownService","currentValue","handleInputChange","openDropdown","$event","id","isValidInput","inputSearchFilter","compareString","itemsDisplayProperty","toLowerCase","stringToFind","indexOf","customFilter","itemsFilter","getDisplayValue","onValidationChange","handleSelectionChange","$item","clearSelection","MiniCalendarController","firstMonday","searchDate","Date","getDay","getCalendarMondaysDate","nDays","calendarCells","j","nRows","cellIndex","getUpcomingDate","isToday","today","getMonth","getYear","isOutOfScope","hasOrders","dateHasOrders","generateCalendarCells","initDateTimeEvents","datepicker","language","todayHighlight","minViewMode","maxViewMode","orientation","autoclose","e","setFullYear","getFullYear","setMonth","periodType","onDateSelected","$newDate","$periodType","openDate","dayRepeater","increment","upcomming","getTime","d","formatDateOrMonth","m","dateString","ordersFilteredByDate","calendarOrders","date_i","rowRepeater","dayStrings","monthStrings","MobileFilterController","megaFilterService","locationFactory","$localStorage","vehicleDropLocations","mainProjectId","user","session_main_project","main_project_id","vehicleDropLocationClicked","vehicleDropLocation","currentlySelected","Id","name","getFilterableVehicleDropLocations","isArchive","then","result","CreateButtonsController","ManageButtonsController","showConfirmDelete","ModalFormWrapperController","ViewButtonsController","ContactInputsController","InputLengthLimits","hasValidNotifitionSelection","email_notif","sms_notif","areNotificationsRequired","changes","isValidName","contact_name","isValidEmail","email","isValidPhone","phone_nr","handleContactSelected","selectedContact","newData","contact_id","phone","onContactSelected","$data","DeliveryTimeSlotInputsController","generalHelperService","recurringDirectDeliveryHelper","$timeout","minimumDeliveryTimespan","duration","maximumDeliveryTimespan","defaultDeliveryTimeSpan","isRecurringOrder","orderType","OrderTypeEnum","RECURRING_DIRECT_DELIVERY","obj","Object","keys","getPrototypeOf","prototype","week_frequency","recurring_week","day_name","slots","week_day","active","hasRecurringTimeSlot","handleIsRecurringOrderChanged","onRecurringOrderSelected","$isRecurringOrder","recurringWeek","hasAtLeastOneTimeSlot","slottime1Set","time_i","slottime2Set","time_f","recurringStartSet","isValidDate","recurring_start","recurringEndSet","recurring_end","day","slot","datetimepicker","locale","DateTimePicker","stepping","initial","isInternal","limitDateTimeToCurrent","final","addTimespanToDateTime","newFinal","getValidFinalDateTime","limitDateTimeSpan","start","end","newStart","getValidInitialDateTime","newEnd","updateAllowedPassages","addRecurringSpan","recurringDay","at_recurring_day","removeRecurringSpan","splice","allowedPassages","calculateAllowedPassages","allowed_passages","$$phase","$apply","deactivateRecurringDays","ngRepeatFinishedEvent","index","pickerSuffixIndexAndFromOrTo","inputElementSuffixIndexAndFromOrTo","is_setup","elementIdWithIndex","ev","currentTarget","slice","addTimespanToTime","limitTimespan","ResourceBookingInputsController","orderFactory","errorService","addResourceBooking","isValidResourceLocation","resourceBooking","resource_location_name","resource_location_id","isValidSlotTimeStart","slot_time_start","isValidSlotTimeEnd","slot_time_end","hasInvalidBooking","handleResourceLocationSelected","selectedResourceLocation","LocationId","Name","checkIsAvailable","isAddAllowed","removeResourceBooking","isDeleteAllowed","pop","isResourceAvailable","resource_booking_id","response","isUnavailable","error","handleError","is_initiated","SectionBookingChoiceController","taskStatusService","roleService","sessionMainProject","isCompleted","isValidFiles","isValidDeliveryTimeSlots","isValidResourceBookings","setDropLocationDependingInfo","currentProjectId","ProjectId","dropLocationParentId","ParentLocationId","clearChildNodes","level","finalDestinationLocationNodes","loc","location_name","location_id","is_destination","is_scannable","removeSelectedFinalDestination","node","destination_location_id","destination_location_name","showDirectDeliveryCollisionWarning","isWarehousePlanner","isWarehouseOperator","showArrivalTime","TRANSSHIPMENT","STORING","MATERIAL","showDeliveryTimeSlots","DIRECT_DELIVERY","GATE_BOOKING","showNumberOfTransports","showUnloadingPlace","RESOURCE_BOOKING","showResourceBookings","showSpecifiedAddress","showExternalOrderReference","showDestinationInformationSelector","showAdditionalOptions","showExtendedAdditionalOptions","showFileUpload","isGateBooking","isResourceBooking","handleInputChanged","n_transports","n_unbooked_transports","specified_address","clearFinalDestination","timeslots","resource_bookings","staircase_location_id","staircase_location_name","isPreviousSectionCompleted","vehicle_drop_location_id","location","setCurrentProjectIdFromVehicleDropLocation","finalDestinationLocations","depth","setFinalDestinationLocationNodes","nodes","Level","currentBase","IsScannable","parent","prevBase","buildFinalDestinationTreeFromLocation","updateFinalDestination","handleValidationChange","source","value","checkDirectDeliveryCollision","console","handleDestinationInformationSelection","isOptionSpecifiedAdress","vehicle_drop_location_name","address","city","zip_code","handleVehicleDropLocationSelected","gate_in_id","gate_in_name","gate_out_id","gate_out_name","extra_gate_in_id","extra_gate_in_name","extra_gate_out_id","extra_gate_out_name","handleFinalDestinationSelected","LocationName","handleFilesSelected","file_attachments_to_add","getFilePath","fileName","createFileLink","orderId","isValidArrivalTime","isValidDateTime","arrival_time","isValidVehicleDropLocation","isValidFinalDestination","selectedLocation","destination","is_final_destination_required","isValidStaircase","selectedStaircase","isValidOptionalInput","isValidSpecifiedAddress","isValidNumberOfTransports","isValidGates","hasGateIntegration","isValidExternalOrderReference","ext_order_reference","deleteKeyFromObject","object","key","onCompletedChange","$isCompleted","arrivalTime","minDeliveryDate","isExpress","dateToDateTimeString","isTimeSlotAvailable","slotIsAvailable","isConfirmedOrLater","taskStatus","isDelivered","checkFinalDestination","disabled","parentHasChildren","hasChildren","getCurrentSubProjectLocationNode","subProjects","LocationTypeName","selectedNode","matchingLocation","handleStaircaseSelected","staircase_name","SectionDeliveryInformationController","workOrderFactory","reloadSuppliers","workOrderId","getSuppliers","suppliers","supplier","vehicle_type_id","vehicle_type_name","material","materials","n_materials","isValidSupplier","isValidVehicleTypeName","hideVehicleType","isValidMaterial","isValidMaterialAmount","deleteSupplier","supplierId","SectionProjectController","isContactPersonValid","isCompanyValid","isWorkOrderValid","handleCompletionChange","clearSection","_$localStorage$user$s","_$localStorage$user$s2","work_order_id","work_order_name","contact_person","send_sms_notifications_by_default","showReceiver2","showReceiver3","onCompanySelected","company","onFormResetAction","company_id","company_name","onWorkOrderSelected","workOrder","onWorkOrderChanged","$workOrderId","filterByCompany","formType","SectionReceiversController","contactFactory","$q","isReceiver1Valid","isReceiver2Valid","isReceiver3Valid","defaultContact","contactList","receiver1","deleteReceiver","addReceiver","receiver","receiver2","receiver3","handelDataChange","copyContactInfo","copyContactData","getContacts","repackageDTOArray","reject","filters","filter","bottom","parseInt","output","top","showInactive","propName","is_active","split","substring","charAt","substr","test","limit","route","is_template","usedForTemplating","compareRoute","route_id","source_template_id","destinationLocations","find","l","locationTypeName","orderNumber","number","out","inputArray","filteredArray","order","reverse","directives","directive","restrict","scope","dateTimeFilterParent","dates","templateUrl","link","$watch","newValue","oldValue","setDateTime","newFrom","newTo","from","document","getElementById","to","fromMoment","toMoment","isSameOrBefore","isSameOrAfter","module","$uibModal","orderFormModalService","element","attrs","bind","openModalInstance","cpy","openModalInstanceForCpy","orderFormPromise","openCreate","openView","results","copy","notifications","formLocked","$compile","orderHoverInfo","creator","receivers","contacts","contact","ContactRoleId","ContactRoleEnum","ORDER_CREATOR","DELIVERY_RECEIVER","receiverTemplate","Phone","Email","template","order_id","append","hoverInfoExpanded","remove","stopEventPropagation","stopPropagation","services","service","openQuickGuide","sessionStorage","hideQuickGuideThisSession","open","size","$uibModalInstance","userFactory","languageFactory","atPage","initialHideQuickGuideForUser","hideQuickGuideForUser","sessionDivision","getLanguageDivision","guides","url","divisions","allowedGuides","allowedGuide","allow","division","guide","incrementPage","decrementPage","cancel","changeQuickGuideShown","close","quickGuideService","click","additionalServiceTypeId","elem","className","AdditionalServiceTypeEnum","CARRYING","GUIDING","UNLOADING_HELP","EXPRESS_DELIVERY","QUITTANCE","TIMING","UNPACKING","ARRIVAL_CONTROL","addClass","replace","identifyRoles","isAdmin","isServicenter","isProjectOwner","isCustomer","adminSideMenu","adminSideMenuVisible","bool","visible","registerUser","animation","backdrop","ariaLabelledBy","ariaDescribedBy","windowClass","require","modelName","$parent","filePath","titleText","mimeType","showIcon","$http","downloadFile","method","responseType","blob","Blob","fileURL","window","URL","webkitURL","createObjectURL","downloadLink","css","display","body","href","download","target","$parse","model","fileModel","isMultiple","multiple","modelSetter","assign","values","_file","controllerAs","authFactory","vm","setMainProjectData","hasSessionMainProject","external_support_email","external_support_phone_number","internal_support_email","internal_support_phone_number","limitTo","isNaN","preventDefault","attr","$last","$emit","onFinishRender","$index","passCodeStatusColor","attributes","PassCodeStatusEnum","REQUEST_SENT_HAS_ERROR","PASSCODE_RECEIVED","REQUEST_SENT","NO_REQUEST_SENT","modelController","$parsers","transformedInput","$setViewValue","$render","ngModel","$formatters","parseFloat","factories","factory","ENV","$httpParamSerializer","$cookies","endPoint","apiEndpoint","validateCaptcha","captchaToken","req","headers","Content-type","login","username","password","grant_type","getMe","get","logout","defaults","common","Authorization","isLoggedIn","setAuthTokenAndRedirect","isLoginPage","isActivatePage","isResetPage","notificationTemplateFactory","divisionsUrl","companyFactory","compareCompanies","company1","company2","company_display_name","localeCompare","getCompanies","includeInactive","divisionId","params","getCompany","createCompany","comp","JSON","stringify","post","updateCompany","put","activateCompany","deactivateCompany","deleteCompany","delete","getErpCompanies","getErpWorkOrders","companyId","getFilterableCompanies","includeDeleted","repackageCompanyDTOArray","companyDTOArray","companyArray","companyDTO","repackageCompanyDTO","sort","repackageErpCompanyDTOArray","erpCompanyDTOArray","erpCompanyArray","erpCompanyDTO","erpCompanyDto","erpCompanyNo","erp_system_company_no","CompanyNo","organization_number","OrganizationNumber","work_orders","repackageWorkOrderDTOArray","WorkOrders","CompanyId","street_address","StreetAddress","ZipCode","City","Contact","sms","Sms","ErpSystemCompanyNo","IsActive","comments","Comments","notification_configuration","extendTemplatesWithNames","NotificationTemplates","packageCompany","DivisionId","getContact","createContact","type","updateContact","activateContacts","ids","deactivateContacts","deleteContact","repackageDTO","DTO","ContactId","Company","company_and_name","description","Description","MainProjectId","DTOArray","repackagedDTOArray","deliveryFactory","loadDeliveryLocations","deliveryLocationDTOArray","newDeliveryLocations","locationMappingIndex","orders","destinationMappingIndex","newOrders","drop_location_id","DropLocationId","drop_location_name","DropLocationName","destination_location_path","DestinationLocationPath","Address","Orders","OrderId","task_id","TaskId","order_number","OrderNumber","order_type","OrderType","task_status","TaskStatus","package_count","SpecifiedPackageCount","package_weight","SpecifiedPackageWeight","pallet_count","SpecifiedPalletCount","pallet_weight","SpecifiedPalletWeight","other_count","SpecifiedOtherCount","other_weight","SpecifiedOtherWeight","content","Content","WorkOrderName","receiver_name","OrderReceiverName","receiver_phone","OrderReceiverPhone","erp_system_reference","ErpSystemReference","total_count","total_weight","additional_services","AdditionalServices","getDeliveriesByDate","getDelivery","updateDelivery","deliveryDTO","confirmDelivery","deliverDelivery","deleteDelivery","assignOrdersToNewRoute","assignOrdersToNewRouteDeliveryDTO","jsonDto","assignOrdersToRoute","outObj","assignOrdersToNewInternalTransport","assignOrdersToNewExternalTransport","assignOrdersTransport","createDTO","delivery","DeliveryId","delivery_id","DeliveryTypeId","delivery_type_id","DeliveryStatusTypeId","delivery_status_type_id","DeliveryDate","delivery_date","ShippingId","shipping_id","Capacity","capacity","CurrentWeight","current_weight","Time","time","VehicleId","vehicle_id","DeliveryLocations","original_delivery_locations","shipping_name","ShippingName","vehicle_name","VehicleName","current_weight_include_specified","CurrentWeightIncludeSpecified","delivery_locations","DeliveryTypeEnum","ROUTE_DELIVERY","full_name","RouteName","route_name","RouteId","RouteIsTemplate","RouteSourceTemplateId","RouteDeliveryTimeTypeId","DeliveryTimeTypeEnum","SPECIFIC","FORENOON","AFTERNOON","timeString","transport_name","deliveryDtoArray","deliveryArray","deviationCodeFactory","getDeviationCodes","getDeviationCode","createDeviationCode","updateDeviationCode","activateDeviationCode","deactivateDeviationCode","deleteDeviationCode","deviation_code_id","DeviationCodeId","deviation_code_name","divisionFactory","getDivisions","getDivision","updateDivision","division_id","division_name","gateFactory","getGates","resolve","getGatesByMainProjectId","getGate","createGate","gate","updateGate","activateGate","deactivateGate","deleteGate","gate_id","GateId","gate_name","system_gate_name","SystemName","gate_location","Location","project_id","project_name","ProjectName","gatePassFactory","getAllGatePasses","supportedLanguages","setLanguageIfNone","localStorage","NG_TRANSLATE_LANG_KEY","use","lang_prefix","changeLanguage","langKey","keySplit","langPrefix","langSuffix","lang_suffix","changeBaseLanguage","baseLang","newLang","changeLanguageDivision","langDivision","divisionKey","changeLanguageByDivisionId","DivisionTypeEnum","CONSTRUCTION","PRODUCTION","getLocations","getLocation","createLocation","updateLocation","activateLocation","deactivateLocation","deleteLocation","getLocationTreeRules","getFilterableResourceLocations","getDestinationLocations","parent_location_id","LocationTypeId","location_type_id","SortOrder","sort_order","RootMainProjectId","root_main_project_id","location_type_name","LocationTypeAlias","child_location_type_ids","ChildLocationTypeIds","collapsed","show","LocationTypeEnum","MAIN_PROJECT","PROJECT","SUB_PROJECT","sub_project_id","SubProjectId","mainProjectFactory","getMainProjects","getMainProject","createMainProject","project","updateMainProject","activateMainProject","deactivateMainProject","deleteMainProject","createLesDTO","les","LesParameterId","LesParameterTypeId","LesParameterTypeName","Value","mainProject","main_project_name","GroupageAreaName","groupage_area_name","ShortName","main_project_short_name","ArticleNumber","main_project_article_number","PhoneInternal","EmailInternal","HoursToMinOrderDate","main_project_hours_to_min_order_date","IsFinalDestinationRequired","IsBillable","is_billable","SendSmsNotificationsByDefault","IsDirectDeliveryFunctionEnabled","is_direct_delivery_function_enabled","IsTransshipmentFunctionEnabled","is_transshipment_function_enabled","IsStoringFunctionEnabled","is_storing_function_enabled","IsMaterialOrderFunctionEnabled","is_material_order_function_enabled","IsResourceBookingFunctionEnabled","is_resource_booking_function_enabled","IsWarehouseBalanceFunctionEnabled","is_warehouse_balance_function_enabled","IsPlanTransportFunctionEnabled","is_plan_transport_function_enabled","LesParameters","les_parameters","getKeyByValue","les_parameters_dto","ngToast","mainProjectFileFactory","saveFile","mainProjectFileId","formData","FormData","config","Content-Type","resultPromise","catch","danger","getMainProjectFileUrl","createMainProjectFile","mainProjectFile","json","getMainProjectFiles","getMainProjectFile","updateMainProjectFile","deleteMainProjectFile","repackagedDTO","MainProjectFileId","header","Header","File","FileName","fileUploaded","FileUploaded","FileUrl","getNotificationTemplates","getNotificationTemplate","updateNotificationTemplate","notificationTemplate","getConfigurableTemplates","notificationConfiguration","reduce","acc","conf","NotificationType","NotificationTemplateName","NotificationTypeEnum","IsSelected","notificationsFactory","getNotifications","orderDirectDeliveryFactory","createOrderDTO","orderStatus","DeliveryReceiver1ContactId","dr","DeliveryReceiver1ContactName","DeliveryReceiver1ContactPhone","DeliveryReceiver1ContactEmail","DeliveryReceiver1ContactWantEmail","DeliveryReceiver1ContactWantSms","DeliveryReceiver2ContactId","DeliveryReceiver2ContactName","DeliveryReceiver2ContactPhone","DeliveryReceiver2ContactEmail","DeliveryReceiver2ContactWantEmail","DeliveryReceiver2ContactWantSms","DeliveryReceiver3ContactId","DeliveryReceiver3ContactName","DeliveryReceiver3ContactPhone","DeliveryReceiver3ContactEmail","DeliveryReceiver3ContactWantEmail","DeliveryReceiver3ContactWantSms","Supplier","di","HasAdditionalServiceGuiding","bc","guiding_help","HasAdditionalServiceUnloadingHelp","unloading_help","IsUnannouncedGoods","is_unannounced_goods","IsUnreachable","is_unreachable","IsUnusedResource","is_unused_resource","AdditionalServiceGuidingStatusId","dto","AdditionalServiceUnloadingHelpStatusTypeId","VehicleTypeId","VehicleTypeCode","VehicleDropLocationId","VehicleDropLocationName","DestinationLocationId","DestinationLocationName","StaircaseLocationId","SlotTimeMin","SlotTimeMax","InGateId","InGateName","OutGateId","OutGateName","ExtraInGateId","ExtraInGateName","ExtraOutGateId","ExtraOutGateName","NumTransports","NumUnbookedTransports","Files","GatePassCode","Quantity","OrderStatus","WorkOrderId","proj","WorkOrderCompanyId","WorkOrderCompanyName","OrderCreatorContactId","OrderCreatorContactName","OrderCreatorContactPhone","OrderCreatorContactEmail","OrderCreatorContactWantSms","OrderCreatorContactWantEmail","loadRecurringWeek","recurringWeekTemplate","recurringTimes","DayOfWeek","recurring_time_id","RecurringTimeId","createRecurringOrderDTO","orderDTO","recurringSlot","createRecurringTimes","combineFilterAndPagination","pagination","searchString","date1","date2","combined","Filter","copyFilter","Pagination","skip","take","Skip","Take","SearchString","deliveryTimeFrom","deliveryTimeTo","saveFiles","fileAttachmentTypeEnum","filePromises","Promise","all","fileAttachmentTypeId","getOrders","RepackageDTOSlice","getOrdersFromExtendedSet","getOrdersWithPackages","RepackageDTOSliceWithPackages","getPackageCollections","chosenTimeValueType","dateTimeFrom","dateTimeTo","getGateBookings","getArchived","getArchivedWithPackages","getUndeliveredOrders","includeAllStatuses","getOrder","createOrder","formGuid","FileAttachmentTypeEnum","DOCUMENT","getGuid","confirmOrder","options","fileAttachments","updateOrder","cancelOrder","reactivatePackageCollectionOrder","renotifyOrderStatus","getDirectDeliveryFormBase","renotifyDirectDeliveryOrder","vehicleDropLocationId","resourceLocationId","resourceBookingId","passCodeTryAgain","getStoringFormBase","getTransshipmentFormBase","getMaterialFormBase","getResourceBookingOrderBase","getNextStatus","taskStatusId","setNextStatus","setNextStatusMultiple","orderIds","finally","removeOrderFromDelivery","order_type_name","order_status_type_id","order_status_type_name","OrderStatusTypeEnum","task_status_name","TaskStatusTypeEnum","work_order_company_id","work_order_company_name","packages","Packages","Contacts","is_accessible_to_user","IsAccessibleToUser","originalDTO","WOProjects","DropLocationProjectId","time_span","date_f","gate_pass_code","PassCode","is_part","IsPart","parts_count","PartsCount","part_number","PartNumber","well_sec_error_code","WellSecErrorCode","pass_code_status_id","PassCodeRequestStatusId","RecurringStart","RecurringEnd","OrderDate","arrival_at_warehouse","timing_due_date","TimingDueDate","PackageCount","PackageWeight","wished_delivery_time","wished_delivery_date","ResourceLocationName","ResourceLocationId","repackageOrderWithPackagesDTO","package_id","PackageId","package_status_type_name","PackageStatusTypeEnum","PackageStatusType","delivery_number","package_number","ExternalPackageId","tracking_number","TrackingNumber","Destination","current_location","current_location_date_time","Updated","Items","totalCount","TotalCount","repackageOrderWithPackagesDTOArray","printShippingsNote","printerId","printLabel","printNotice","updateAdditionalService","serviceTypeId","serviceStatusTypeId","AdditionalServiceTypeId","AdditionalServiceStatusTypeId","repackageResourceBookingDTOArray","ResourceBookingId","SlotTimeStart","SlotTimeEnd","createResourceBookingDTOArray","resourceBookings","orderGateBookingFactory","AllowedPassages","orderMaterialFactory","articlesBatchEquals","article1","article2","article_id","batch","storage_location","compareArticles","compare","article_name","availability","packageArticles","articles","storageLocation","articleOrderLineDtoArray","articleToAdd","articleQuantity","article_quantity","original_article_quantity","orderLineDto","_","ArticleId","ProductionBatchId","OrderedQuantity","StorageLocation","Unit","unit","Weight","weight","repackageArticleOrderLineDTOArray","articleOrderLineDTOArray","articleOrderLineDTO","article","repackageArticleDTOsAsArticleOrderLineArray","articleDTOArray","orderedArticles","articleDTO","Availability","orderedArticle","orderedQuantity","array","insertIndex","lastArticle","articleIx","findIndex","quantityToTakeFromThisArticle","Math","min","outOfStockArticle","clone","a","DestinationAddress","DestinationZipCode","DestinationCity","WishedDeliveryDate","WmsSystemReference","epix_owner_number","ArticleOrderLines","wb","si","HasAdditionalServiceExpressDelivery","has_express","HasAdditionalServiceTiming","has_timing","AdditionalServiceTimingDueDate","timing","IsReturn","ar","is_return","AdditionalServiceTimingStatusTypeId","AdditionalServiceExpressDeliveryStatusTypeId","packageFactory","orderPackageCollectionFactory","CustomName","package_collection_name","ValidFrom","valid_from","ValidTo","valid_to","PACKAGE_COLLECTION","packageCollectionOrders","packageCollectionOrderDTO","TaskStatusTypeAlias","work_order_display_name","workOrderDisplayName","package_collection_id","CustomId","orderResourceBookingFactory","ResourceBookings","ParentOrderId","br","parent_order_id","orderStoringFactory","ExternalOrderReference","Arrival","HasAdditionalServiceArrivalControl","HasInadequateLabeling","has_inadequate_labeling","OtherReference","other_reference","orderTransshipmentFactory","ArrivalAtWarehouse","getPackages","getPackagesWithFilter","packageCollectionOrderId","getPackage","createPackage","pack","updatePackage","deliverPackage","buildImageLinks","packageID","image","dl_link","getPackageHistory","delivery_time","OrderTypeAlias","package_status_type","package_status_name","package_type","PackageTypeEnum","PackageType","Receiver","package_address","package_location_id","package_location_name","package_end_address","EndAddress","package_end_city","EndCity","package_end_location_id","EndLocationId","package_end_location_name","EndLocationName","package_end_postal_code","EndPostalCode","package_created","PackageCreated","package_updated","PackageUpdated","package_delivered","PackageDelivered","Comment","carrier","Carrier","deviation","DeviationCodeName","deviation_code","image1","Image1","image1_link","image2","Image2","image2_link","image3","Image3","image3_link","image4","Image4","image4_link","has_images","signature_image","SignatureImage","signature_image_link","signature_clarification","SignatureClarification","currentPlace","endPlace","packageTime","chosenTimeType","PackageTimeValueTypeEnum","DELIVERED","UPDATED","printerFactory","getAllPrinters","getPrintersByMainProjectId","getPrinter","createPrinter","updatePrinter","activatePrinter","deactivatePrinter","deletePrinter","printer_id","PrinterId","MainProjectName","printer_name","printer_location","printer_partition","Partition","projectFactory","getProjects","getProject","createProject","updateProject","activateProject","deactivateProject","deleteProject","getFilterableProjects","projectDTO","project_short_name","DefaultInGateId","DefaultInGateName","DefaultOutGateId","DefaultOutGateName","projectDTOArray","projectArray","routeFactory","getRouteTemplates","getRouteTemplatesByMainProjectId","getRoute","createRoute","updateRoute","activateRoute","deactivateRoute","deleteRoute","isTemplate","timeType","is_afternoon","is_forenoon","isActive","DeliveryTimeTypeId","IsTemplate","SourceTemplateId","routeDTOArray","routeDTO","displayTime","display_time","delivery_time_type_id","shippingFactory","getShippings","getShippingsByMainProjectId","getShipping","createShipping","shipping","updateShipping","activateShipping","deactivateShipping","deleteShipping","IsExpress","is_express","IsNonWorkHours","is_non_work_hours","UnifaunReference","unifaun_reference","statisticsReportFactory","getDeliveryReport","subProjectIDs","fromDate","toDate","getPlanningReport","excelBinaryString","atob","ExcelData","excelBytes","Uint8Array","charCodeAt","totalRecordCount","TotalRecordCount","recordCount","RetrievedRecordCount","excelArrayBuffer","buffer","subProjectFactory","getSubProjects","getSubProject","createSubProject","updateSubProject","activateSubProject","deactivateSubProject","deleteSubProject","sub_project_name","getFilterableSubProjects","sub_project_short_name","supplierFactory","getSupplier","createSupplier","updateSupplier","activateSupplier","deactivateSupplier","createUser","role","updateUser","UserId","activateUser","activateAccount","hideQuickGuide","requestPasswordReset","passwordResetRequestDTO","resendActivationLink","userDTO","resetPassword","passwordResetDTO","changePassword","changePasswordDTO","getUser","reActivateUsers","deactivateUsers","getUsers","filterAndPagination","updateMe","isUserDataSet","companies","user_name","phone_number","role_id","user_id","user_role_name","setUserData","forceRefresh","Companies","Login","PhoneNumber","RoleId","RoleName","main_projects","MainProjects","projects","Projects","sub_projects","SubProjects","HideQuickGuide","IsPasswordChangeRequired","isPasswordChangeRequired","vehicleFactory","getVehicles","getVehiclesByMainProjectId","getVehicle","createVehicle","vehicle","updateVehicle","activateVehicle","deactivateVehicle","deleteVehicle","vehicle_type_code","vehicleTypeFactory","getVehicleTypes","getVehicleType","createVehicleType","updateVehicleType","activateVehicleType","deactivateVehicleType","deleteVehicleType","Code","vehicle_capacity","getWorkOrders","getWorkOrder","getAllWorkOrdersByCompanyId","getWorkOrdersByCompanyId","createWorkOrder","workOrderDTO","updateWorkOrder","activateWorkOrder","deactivateWorkOrder","deleteWorkOrder","createEpixXML","getFilterableWorkorders","packageWorkOrder","work_order_short_name","WorkOrderType","work_order_type","WorkOrderGroup","work_order_group","ContactName","ContactEmail","contact_email","ContactPhone","contact_phone","subProjectsOut","CompanyName","CompanyRoleId","HasGateIntegration","has_gate_integration","ErpSystemShortName","erp_system_short_name","ErpGroup","ErpType","erpSystemReference","repackageWorkOrderDTO","wo_projects","company_role_id","company_role_name","CompanyRoleName","erp_display_name","pyramid_order_number","workOrderDTOArray","workOrderArray","wo1","wo2","extractUniqueCompaniesFromWorkOrders","workOrders","uniqueCompanies","isUnique","materialFactory","getMaterials","getMaterialsExport","spVersion","isOutdatedSite","versionHeader","_response","responseError","idKey","unique","entry","collection","findValue","keyFound","generateFirstColorClass","generateSecondColorClass","floor","calculateOrderWeight","weightSum","printDiv","divId","printContents","cloneNode","printContentsInner","innerHTML","popupWin","write","dateTimeStringToMoment","dateTimeString","parseDate","timeDate","parseTime","parseDateSpan","timeDateI","timeDateF","splitI","splitF","parseTimeSpan","initialDate","finalDate","isBefore","dateTime","currentDateTime","isAfter","minDuration","maxDuration","excludeTime","minDate","maxDate","dateToDateString","startTime","endTime","maxHour","minTime","maxTime","dateToTimeString","initialDateTime","timespan","newDate","initialTime","newTime","generateNameMapFromEnum","enumCollection","map","c","getEnumIds","areEquivalentArrays","array1","array2","sorted1","sorted2","loadApi","getScript","recaptchaSiteKey","getConvertedDay","dayIndex","getWeek","setHours","week1","round","validFrom","validTo","weekFrequency","timeLine","refDate","endDate","createTimeLine","isOrdered","statusTypeId","AdditionalServiceStatusTypeEnum","ORDERED","isConfirmed","CONFIRMED","COMPLETED","isNotCompleted","NOT_COMPLETED","dropDownId","dropDown","hasClass","status","allowedExtentionsArray","isValidTime","extention","filterAll","filteredOrders","filterSelectionObject","filterByDeliveryStatus","nothingFiltered","nextFiltered","deliveryStatus","subset","concat","filterByDeliveryTime","filteredOrder","setMinutes","filterBySubProjects","sub_project_label","sub_project","filterByVehicleDropLocations","vehicle_drop_locations","drop_location","filterByCompanies","filterByWorkOrders","work_order","filterByPassCodeError","error_codes","errorCode","code","originalOrders","orderTypes","extractUniqueProjects","extractToArray","extractFromArray","extractUniqueSubProjects","extractUniqueVehicleDropLocations","extractUniqueCompanies","extractUniqueWorkOrders","extractUniqueErrorCodes","getEmptyFilter","taskStatuses","resourceLocations","flattenDate","utc","isEmptyFilter","includeOrExcludeOrderType","shallBeIncluded","isIncluded","RoleEnum","ADMINISTRATOR","SERVICENTER","PROJECT_OWNER","WAREHOUSE_PLANNER","WAREHOUSE_OPERATOR","CUSTOMER","myRoleId","PICKED","ARRIVED","ASSIGNED_TRANSPORT","ASSIGNED_ROUTE","STORED","isPicked","isArrived","isAssignedToTransport","isAssignedToRoute","isStored","isNotified","NOTIFIED","isCancelled","CANCELLED","components","component","events","onEventClick","transclude","tools","itemOnClick","controllers","loadUserData","user_login","user_type","user_email","user_phone","user_company_name","mainProjects","list","mainProjectsTree","mpKey","pKey","subProject","spKey","form_type","objectLength","innerRange","selectedAny","selectedAll","hasActiveSelection","hasInactiveSelection","hasMixedSelection","sortReverse","sortReverseFn","getVisibleItems","filtered","reloadTable","deviation_codes","checkAll","p","updateSelection","unCheckAll","oneActiveSelected","oneInactiveSelected","ENNTER","pendingSearchString","updateFullTableRange","activateDeviationCodes","viewDeviationCode","_id","deviationCodeRepeatFinishedEvent","app","validated","create","validateForm","activation","update","dismiss","formValid","notificationsData","tempNotification","notification_id","NotificationId","notification_date","notification_contact_name","notification_phone_number","notification_email","To","notification_type_name","notification_message","Body","Message","notification_delivery_number","notification_work_order","notification_isEmail","NotificationMedium","NotificationMediumEnum","EMAIL_NOTIFICATION","notification_isSMS","SMS_NOTIFICATION","hasSelection","selectedNotifications","displayDateSeparator","order1","order2","displayDate","translations","months","toISOString","pDate","isBeforeToday","param","notificationRepeatFinishedEvent","$location","calendarConfig","$templateRequest","megaFilterModalService","showingArchive","warehouseBalanceModalService","updateMiniListOrders","miniListOrders","currentOrdersPeriodType","viewDateRef","startOf","endOf","orderDate","setMainProjectState","canCreateDirectDeliveryOrder","canCreateTransshipmentOrder","canCreateStoringOrder","canCreateMaterialOrder","canCreateResourceBookingOrder","canOpenWarehouseBalance","loadOrders","currentOrdersType","loadTask","orderSlice","toLocaleDateString","old","paginationConfig","updateDatePagination","loadedMonth","isDatePaginationIsOutOfRange","getDefaultOrderTypesForPeriodType","calendarEvents","isFilterActive","pageSize","statusChangeAllowed","endOfToday","oneMonthAgo","updateDeliveryDateFilter","updatePaginationAndLoad","onViewDateChanged","setCurrentOrdersView","ordersType","hasChangedOrdersType","hasChangedToListView","hasChangedDateInCalendarView","newPeriodType","currentDefaultOrderTypes","updateOrderTypeFilterForPeriodType","search","timestamp","parse","setInitialCurrentOrdersView","showSideMenu","toggleOrderTypeVisibility","shallInclude","isOrderTypeSelected","createCalendarEventFromOrder","shortTitle","startsAt","endsAtDate","endsAtTime","endsAt","realEndsAt","diff","borderClass","pinColorFirst","pinColorSecond","locationId","colors","confirmed","notified","canceled","empty","getTaskStatus","getCalendarTooltipText","color","colorTypes","white","dropLocationId","draggable","resizable","updateStatusChangeAllowed","markedOrders","firstOrderType","firstOrderStatus","currOrder","nextStatus","tooltipText","isDirectOrder","isDirectOrRecurringDirectOrder","dateOrMonth","o","filterOrders","createTransshipmentOrder","createDirectDeliveryOrder","createStoringOrder","createMaterialOrder","createResourceBookingOrder","openWarehouseBalance","viewOrder","orderInterctionIsLocked","openManage","success","viewOrderIfDirectDelivery","calendarOnEventClicked","calendarEvent","openMegaFilter","openFilter","newFilter","markedOrderIds","mobileSearchString","resetOrderPartTimesToInitial","partOrderNotFirst","singleOrStartOrderPart","incrementDay","removePlaceholdersByKeys","placeholderList","keysToRemove","placeholderKey","generateOrderWeekPlaceholderListAndPlaceOrders","orderWeekPlaceholderList","first","available","second","third","fourth","generateOrderWeekPlaceholderList","dateOfDay","getDateOfDay","getOrdersInCurrentWeekByDateAndHour","done","placeholder","placeholderIndex","placeOrdersAndReservePlaceholders","cleanUnusedPlaceholders","generateOrderDayList","ordersDateReset","ordersInDay","formatedDate","getFirstDateOfWeek","w","y","simple","ISOweekStart","week","year","firstDateOfWeek","getDateObjectOfDay","getDateObjectOfDateNumber","getOrdersByDate","ordersInDate","getOrdersByDateObject","getOrdersInCurrentWeek","datesThisWeek","ordersThisWeek","hour","ordersInHour","ordersInWeek","timePattern","RegExp","datePattern","getOrdersByDateAndHour","ordersByDate","ordersByTime","getOrdersByHour","inHour","viewOrderFromCalendar","hasMoreOrdersInWeek","hasMissingOrdersFromPrevDayInWeek","ordersInCurrentDateAndTime","ordersInPrevDateAndTime","found","prevOrder","isEmptyObject","currentOrder","isMobileOrderSelected","selectedVehicleDropLocationId","showMore","dateTimeNow","filterDates","getChildTranslationKey","childLocationTypeId","timeValueTypes","CREATED","tag","fetching","reloadPackageTable","isTimeFilterActive","isSame","setActiveTimeFilter","handleResponse","viewPackage","filterByDate","package_name","system_package_name","package_location","showSpecificPackageCollection","showDelivered","showCancelled","reloadPackageCollectionPackageTable","package_collections","searchForPackageCollections","createPackageCollection","packageCollectionOrder","activatePackageCollections","packageCollections","currentPackageCollectionName","openSpecificPackageCollection","packageCollection","currentPackageCollectionOrderId","getPackagesWithPackageCollectionOrderId","totalPackages","closeSpecificPackageCollection","viewPackageCollection","packageCollectionsRepeatFinishedEvent","loadBase","clear","buildDestinationLocationPath","specified_street_address","default_address_in_use","VehicleDropLocations","DestinationLocations","destinationLocationPath","fillDestinationLocationPath","buildPath","loadCompanies","loadFormBaseOrder","clearDestinations","path","getDestination","outPath","setBaseCompany","loadWorkOrdersByCompany","finalDestination","warning","selectedDestination","baseIsValid","destinationIsValid","destinationIsEmptyButVehicleDropLocationIsValid","locationIsValidOrIrrelevant","streetAddressIsValidOrIrrelevant","toggleDestinationInformation","specifiedAddress","editable","setVehicleDropLocation","dropLocation","filterByProjectId","updatePath","checkDestination","delivery_orders","deliveryLocation","calculateItemCount","calculateTotalWeight","isDisabled","planForDate","currentShipping","statusPlanning","DeliveryStatusTypeEnum","PLANNING","isPlanForDateChecked","routes","reloadUnDelivered","orderDtoArray","reloadPlannerTablesAndLists","reloadRoutes","routeTemplateDtos","routeTemplates","updateRouteList","reloadDeliveries","deliveryDtos","deliveries","route_deliveries","transport_deliveries","INTERNAL_TRANSPORT_DELIVERY","EXTERNAL_TRANSPORT_DELIVERY","routeDeliveriesForDate","deliveriesInPlanning","vehicles","checkPlanForDate","isPlanForDateSet","newRoute","hasTime","hasVehicle","assignToNewRoute","forenoon","afternoon","deliveryDate","OrderIds","Route","uncheckAll","assignToRoute","showShippingError","clonedRouteDTO","assignOrdersToRouteDeliveryDTO","routeId","updateRouteDelivery","_delivery","isDeliveryStatusPlanning","updatedDelivery","createTransportDelivery","_source","assignToNewInternalTransport","assignToNewExternalTransport","InternalTransportDelivery","departure_time","ExternalTransportDelivery","assignToTransport","deliveryId","updateTransportDelivery","_delivery2","isCorrectFormat","statusID","isDeliveryStatusConfirmed","isDeliveryStatusDelivered","setCurrentShipping","shippingId","currentShippingInitiated","hasShipping","openLoadingList","_delivery3","widgetPositioning","horizontal","vertical","dateInCalender","vehicle_capacity_long","vehicleTypes","vehicle_types","isFormValid","save","isInternalTransportUpdate","isExternalTransportUpdate","validInput","setCheckbox","period","setTime","viewCompany","companiesRepeatFinishedEvent","selectedErpCompanyDisplayName","erpCompanies","loadErpCompany","erpCompany","$routeParams","users","RoleTypeName","IsDeactivated","is_selectable","getSelectableItems","selection","isActivatePossible","isDeactivatePossible","allUsersSelected","includeActive","orderBy","orderDescending","isSortingColumn","column","isSortingColumnAndReversed","handleColumnHeaderClicked","handleCheckAllToggled","nrOfSelectedUsers","activatedUserSelected","deactivatedUserSelected","u","activateUsers","selectedUserIds","onSuccess","onFailure","handleSearchKeyUp","handleSearchButtonClicked","handleShowActiveChanged","handlePaginationUpdated","viewUser","mainProjectIdToLookFor","retVal","checked","selectedMainProjects","smp","isWorkorderSelected","selectedWorkorders","swo","saveSelectedWorkorders","workorders","wo","isChecked","canEdit","register_user","lang","SWEDISH","LanguageEnum","ENGLISH","language_id","roleId","editableRoles","includes","canEditUserWithRole","isActivated","IsActivated","contact_phone_nr","selectedCompanies","LanguageId","showExternal","showInternal","showAdmin","showServicecenter","showProjectOwner","showTeamledare","showOperator","showExternalDiv","showInternalDiv","showServicecenterDiv","showProjectOwnerDiv","showOperatorDiv","showTeamledareDiv","mp","subcontractor_company_display_name","subcontractor_company_id","loadWorkorders","evaluateProgress","showAdminDiv","onMainProjectCheckboxChanged","updateSelectedMainProjects","sectionOneDone","sectionTwoDone","sectionThreeDone","sectionFourDone","showWorkorders","subcontractorDropdownChanged","createOrUpdate","errorMessage","showErrorMessage","activationLinkSent","gates","filterInactiveItems","tableItems","translateName","inactive","activateSelectedItems","setToActive","$watchCollection","viewGate","gateBookings","updateFullTableRangeShowCancelled","finalArray","loadData","tempGate","gate_pass_id","GatePassId","GateName","event_id","EventId","occurred","Occured","hasEditPermission","updateContacts","filterInactiveContacts","selectedContacts","isDectivatePossible","selectedIds","viewContact","isValidated","main_contact_id","MainContactId","createItem","activateContact","deactivateContact","updateItem","deleteItem","setFormTypeManage","updateIsValid","inputLengthLimits","PHONE","EMAIL","locationLevelIndexDepth","nonCollapsedNodeCollection","applyLocationTreeRules","locations","locationTypeId","possibleChildren","locationTreeRules","rule","getChildLocations","getEmptyLevels","levels","Array","tree","savedNode","updateCollapsed","some","expandSection","toggleNode","children","child","collapseSection","searchLocationTree","locationName","lastsibbling","pattern","searched_node","searched_path","endNode","currentNode","currentPathLevel","prevNodeParentId","lightUpAndExpandPath","nodeLevel","sibbling","sibblingIndex","findLastSibbling","closeTree","openTree","parentId","_possibleChildren","viewLocation","_possibleChildren2","typeId","canEditScannable","VEHICLE","GROUPAGE_AREA","canEditBaseData","addMultipleLocations","number_start","n_locations","jQuery","extend","vehicle_drop","room","position","other","getInputLengthLimit","VEHICLE_DROP","FLOOR","ROOM","POSITION","OTHER","activateMainProjects","viewMainProject","mainProjectsRepeatFinishedEvent","loadLesParameterList","lesParameters","LesParameterTypeEnum","main_project","lesDTO","isLesParameterInactive","lesParameterTypeId","GATE_BASE_ADDRESS","GATE_USERNAME","GATE_API_PASSWORD","mainProjectFiles","updateMainProjectFiles","viewMainProjectFile","showErrors","filename","isValidFile","onFileSelected","newFile","updateProjects","filterInactiveProjects","selectedProjects","activateProjects","viewProject","DefaultGateInId","DefaultGateInName","DefaultGateOutId","DefaultGateOutName","viewSubProject","contractor_id","OwnerCompanyId","contractor_name","OwnerCompanyName","building_contractor_id","ResponsibleCompanyId","building_contractor_name","ResponsibleCompanyName","viewWorkOrder","workOrderRepeatFinishedEvent","compareWorkOrders","clearFormWorkOrder","selectedErpWorkOrderDisplayName","createSubProjectsToOut","dropdowns","s","dropdownsList","createDropdowns","selectedSubProject","dropdown","loadCompany","erpWorkOrderDTOArray","erpWorkOrderArray","erpWorkOrders","erpWorkOrderDTO","SystemReference","Type","Group","loadErpWorkOrder","erpWorkOrder","filteredSubProjects","tempId","clearSelectedSubProjects","dropDownSubproject","projectHasSubProject","hasSubProject","subP","hasOneSelectedSubproject","hasOneSelected","trySwapSubProjects","subProjectToRemove","subProjectsCanBeDeleted","sp","cloneObject","updateEpix","$inputValidationService","isReportGenerationEnabled","reportFileName","reportRecordCount","reportTotalRecordCount","updateIsReportGenerationEnabled","subProjectsRepeatFinishedEvent","generateStatisticsReport","selectedIDs","x","responseDTO","fromDatePicker","toDatePicker","useCurrent","navigator","msSaveOrOpenBlob","createElement","appendChild","style","revokeObjectURL","removeChild","promptDownload","viewDivision","dataRepeatFinishedEvent","MainProjectShortNamePrefix","ProjectShortNamePrefix","SubProjectShortNamePrefix","WorkOrderShortNamePrefix","DirectDeliveryOrderNumberPrefix","StoringOrderNumberPrefix","TransshipmentOrderNumberPrefix","MaterialOrderNumberPrefix","RecurringDirectDeliveryOrderNumberPrefix","PackageCollectionOrderNumberPrefix","ResourceBookingOrderNumberPrefix","viewNotificationTemplate","activatePrinters","viewPrinter","vehiclesRepeatFinishedEvent","routeDtos","viewRoute","_route","updateTimeSelection","switchTo","clearVehicle","shippings","activateShippings","viewShipping","shippingsRepeatFinishedEvent","viewVehicle","viewVehicleType","vehicleType","onClick","isMainNavigation","icon","titleTranslateTag","iconIsSimpleLine","iconColor","setMouseDownColor","setMouseUpColor","displayText","availableItems","itemNameMap","onSelectItem","isSelected","doTranslate","itemLimit","getIconImageSource","getIconClass","iconClass","titleTag","tooltipTag","onClose","onCancel","onCreate","showDelete","showActivate","onUpdate","onDelete","onActivationChange","inputs","createButtons","viewButtons","manangeButtons","itemTypeTranslateTag","itemName","onSetFormTypeManage","isRecurringAllowed","isRecurringDisabled","resourceList","sectionHeader","sectionNumberIconClass","isFileUploadDisabled","hideWarnings","onVehicleDropLocationSelected","hideContactPerson","$window","reload","activate","token","Token","Password","showLinkToLogin","keyUp","disableButton","password2","showPassword1","togglePassword1","showPassword2","togglePassword2","redirectToLogin","resetPasswordDTO","loadRecaptchaService","siteKey","grecaptcha","ready","execute","action","expireDate","access_token","expires","current_user","userName","btnActive","errorMessageKey","error_description","showLoginError","showPassword","togglePassword","showFormSuccessMessage","showUserSettings","manage","showChangePassword","showPasswordExpiredMessage","OldPassword","NewPassword","verifyNewPassword","showPasswordErrorMessage","showChangePasswordFailedMessage","showPasswordSuccessMessage","passwordErrorMessage","validatePasswordInput","setShowUserSettings","setShowChangePassword","showOldPassword","toggleOldPassword","showNewPassword","toggleNewPassword","showVerifyNewPassword","toggleVerifyNewPassword","isCookieAccepted","doShowMaximizedForm","doClose","handleConsentGranted","siteOutdated","siteOutdatedError","sessionLanguage","selectedVehicleDropLocation","setHeaderBtnActive","btnName","groupActive","gateManagement","transports","statisticsReports","itemActive","setSessionMainProject","settings","openDirectDeliveryMobileForm","toggleMenu","callForFiltering","menu","activeMenu","reloadOrders","adminOrders","displayHeader","displayOrderType","text","viewOrderFromMini","bindToController","packageDetails","reloadPackages","pkg","packageHistory","showHistory","package","canDeliver","chooseTimeValueType","t","itemsPerPage","onChange","updatePage","$eval","touchEnd","touchStart","currentFilter","count","showDeliveriesAndStatusSection","showDatesAndTimeSection","showProjectsSection","workorderPromise","projectPromise","subprojectPromise","vehicleDropLocationsPromise","resourceLocationPromise","companyPromise","now","projectsLimit","subProjectsLimit","vehicleDropLocationsLimit","resourceLocationsLimit","companiesLimit","workOrdersLimit","nameMap","megafilterCache","expiretime","filterableWorkOrders","generateNameMapFromFilterables","generateIdListFromFilterables","filterableProjects","filterableSubProjects","filterableResourceLocations","filterableCompanies","filterList","onChangeDateTimePicker1Change","onChangeDateTimePicker2Change","orderTypeNameMap","deliveryStatusNameMap","resetFilter","isEmpty","updateDatePickersFromFilter","initFilter","updateIsEmpty","updateCount","discard","toggleSelection","datepicker1","datepicker2","initDateTimePickers","_currentFilter","_isArchive","openModal","_orderType","_copy","_parentOrderId","viewInfo","getViewInformation","parentOrderId","openCreateFromReference","export","$log","checkWorkOrderReferences","hasReference","workOrderReferences","setDefaultOrderValues","nextTaskStatus","nextTaskStatusName","isSectionProjectCompleted","isSectionReceiversCompleted","isSectionDeliveryInformationCompleted","isGateBookingOrder","isSectionBookingChoiceCompleted","canUpload","pastConfirmed","canRenotify","canCopy","canRaiseStatus","canConfirm","canCancel","id_number","StaircaseLocationName","file_attachments","WeekTypeId","RecurringTimes","registered","Created","gate_code","used_passages","UsedPassages","gate_data_sent","LastPassCodeRequest","last_notification_sent","LastNotificationSent","gate_booking_failed","LastUnhandledPasscodeNotificationSent","gate_booking_failed_code","showPassCodeFailedError","fillFormDataFromWorkOrder","loadDestinationLocationsForMainProject","findTreeDepth","VehicleTypes","extra_gates","MainProjectGates","ProjectGates","addBookings","lockCall","resourceBookingResults","copyOrder","renotify","setIsRecurringOrder","sectionFiveDone","responce","timingSet","hideArticleBalance","canPrint","ordered_articles","printers","minOrderDate","MinOrderDate","Articles","ProductOwnerNumber","storage_locations","getUniqueStorageLocations","print_label","print_notice","isOrderInProgress","evaluation","inProgress","totalWeight","total","isReadyForPrint","additionalServiceStatusService","isCopy","isChildOrder","orderToLoadId","isLoadingReference","OrderFileAttachmentTypeId","parent_order_number","ParentOrderNumber","checkWorkOrderReferencesCallbacks","subscribeToCheckWorkOrderReferencesChanges","callback","notifyCheckWorkOrdersReferencesChanged","taskStatusChangedCallbacks","subscribeToTaskStatusChanges","setCanEdit","setCanCancel","setCanCopy","setCanUpload","ResourceLocations","setFinalDestinationLocation","arrivalSet","arrival_control_status_id","AdditionalServiceArrivalControlStatusTypeId","arrivelControllCompleted","lockArrivalControlled","is_arrival_controlled","file_attachment_to_add","send","fileInputId","fileSelectedTextId","addArrivalControlFileToOrder","sectionSixDone"],"mappings":"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","file":"../../../assets/js/bundle.min.js","sourcesContent":["// Range filter - used in table pagination\nfilters.filter('rangeBottom', function () {\n return function (input, bottom) {\n if (typeof input === 'undefined') return;\n bottom = parseInt(bottom);\n var output = [];\n angular.forEach(input, function (data, index) {\n if (index >= bottom) {\n output.push(data);\n }\n });\n return output;\n };\n});\nfilters.filter('rangeTop', function () {\n return function (input, top) {\n if (typeof input === 'undefined') return;\n top = parseInt(top);\n var output = [];\n angular.forEach(input, function (data, index) {\n if (index <= top) {\n output.push(data);\n }\n });\n return output;\n };\n});\n\n// Excludes inactive if showInactive is false.\nfilters.filter('inactive', function () {\n return function (input, showInactive, propName) {\n if (typeof input === 'undefined' || input.length === 0) return;\n if (typeof propName === 'undefined') propName = 'is_active';\n if (typeof input[0].is_active === 'undefined') propName = 'IsActive';\n var output = [];\n for (var i = 0; i < input.length; i++) {\n var is_active = input[i][propName];\n if (is_active || !is_active && showInactive) {\n output.push(input[i]);\n }\n }\n return output;\n };\n});\nfilters.filter('toDateTime', function () {\n return function (input) {\n if (typeof input === 'undefined' || input === null) return;\n var split = input.split('T');\n var date = split[0];\n var time = split[1].substring(0, 5);\n return date + ' ' + time;\n };\n});\nfilters.filter('toTime', function () {\n return function (input) {\n if (typeof input === 'undefined' || input === null) return;\n var split = input.split('T');\n var time;\n if (split.length === 1) {\n time = split[0].substring(0, 5);\n } else time = split[1].substring(0, 5);\n return time;\n };\n});\nfilters.filter('toDate', function () {\n return function (input) {\n if (typeof input === 'undefined' || input === null) return;\n var split = input.split('T');\n var date = split[0];\n return date;\n };\n});\nfilters.filter('capitalize', function () {\n return function (input) {\n return !!input ? input.charAt(0).toUpperCase() + input.substr(1).toLowerCase() : '';\n };\n});\nfilters.filter('shortstring', function () {\n return function (input) {\n if (typeof input === 'undefined' || input === null) return;\n var output = '';\n if (input.length > 8) {\n output = input.slice(0, 7);\n } else output = input;\n return output;\n };\n});\nfilters.filter('phoneFilter', function () {\n return function (input) {\n if (!input) {\n return '';\n }\n var output = '';\n var pattern = /^\\+?[\\d-\\s]*$/;\n if (!pattern.test(input)) {\n output = input.substring(0, input.length - 1);\n } else output = input;\n return output;\n };\n});\nfilters.filter('limit', function () {\n return function (input, limit) {\n return input <= limit ? input : limit;\n };\n});\nfilters.filter('removeTemplateRoutesIfTemplated', function () {\n return function (input) {\n var output = [];\n angular.forEach(input, function (route) {\n if (typeof route !== 'undefined') {\n if (!route.is_template) {\n output.push(route);\n } else {\n var usedForTemplating = false;\n angular.forEach(input, function (compareRoute) {\n if (typeof compareRoute !== 'undefined' && route.route_id === compareRoute.source_template_id) {\n // route is template\n usedForTemplating = true;\n }\n });\n if (!usedForTemplating) {\n output.push(route);\n }\n }\n }\n });\n return output;\n };\n});\nfilters.filter('filterDestinationLocationPath', function () {\n return function (destinationLocations, parent) {\n var output = [];\n if (typeof parent === 'undefined') {\n angular.forEach(destinationLocations, function (loc) {\n if (loc.Level === 2) {\n output.push(loc);\n }\n });\n } else {\n angular.forEach(destinationLocations, function (loc) {\n if (loc.ParentLocationId === parent.location_id) {\n output.push(loc);\n }\n });\n }\n return output;\n };\n});\nfilters.filter('filterSubProjectByDropLocationParent', function () {\n return function (destinationLocations, dropLocationParentId) {\n var output = [];\n\n // If drop location is not set, nothing should be shown.\n if (!dropLocationParentId || dropLocationParentId < 0) {\n return output;\n }\n\n // If parent is not in list if available drop locations, no filter should be applied.\n var dropLocationParent = destinationLocations.find(function (l) {\n return l.LocationId === dropLocationParentId;\n });\n if (!dropLocationParent) {\n output = destinationLocations;\n return output;\n }\n\n // If parent is one of the available drop locations, only that location should be return.\n // However, this only applies for SubProject.\n // For other levels, no filter should be applied.\n destinationLocations.forEach(function (l) {\n if (l.LocationTypeName === \"SubProject\") {\n if (l.LocationId == dropLocationParentId) {\n output.push(l);\n }\n } else {\n output.push(l);\n }\n });\n return output;\n };\n});\nfilters.filter('filterLocationTypeEq', function () {\n return function (destinationLocations, locationTypeName) {\n var output = [];\n angular.forEach(destinationLocations, function (loc) {\n if (loc.LocationTypeName === locationTypeName) {\n output.push(loc);\n }\n });\n return output;\n };\n});\nfilters.filter('filterLocationTypeNeq', function () {\n return function (destinationLocations, locationTypeName) {\n var output = [];\n angular.forEach(destinationLocations, function (loc) {\n if (loc.LocationTypeName != locationTypeName) {\n output.push(loc);\n }\n });\n return output;\n };\n});\nfilters.filter('toOrderPrefix', function () {\n return function (orderNumber) {\n return orderNumber ? orderNumber.slice(0, 2) : \"\";\n };\n});\nfilters.filter('cleanNumberInput', function () {\n return function (number) {\n if (typeof number === 'undefined') return;\n var splitComma = number.toString().split('.');\n var out = splitComma[0];\n var splitE = out.split('e');\n out = splitE[0];\n return parseInt(out);\n };\n});\nfilters.filter('orderVehicleDropLocationId', function () {\n return function (inputArray, id) {\n if (id === null || id === undefined) {\n return inputArray;\n }\n var filteredArray = [];\n angular.forEach(inputArray, function (order) {\n if (order.vehicle_drop_location_id === id) {\n filteredArray.push(order);\n }\n });\n return filteredArray;\n };\n});\nfilters.filter('reverse', function () {\n return function (inputArray) {\n return inputArray.slice().reverse();\n };\n});\n'use strict';\n\ndirectives.directive('dateTimeFilter', [function () {\n return {\n restrict: 'EA',\n scope: {\n dateTimeFilterParent: '=',\n dates: '='\n },\n templateUrl: 'assets/js/directives/dateTimeFilter/date_time_filter.html',\n link: function link(scope) {\n scope.$watch('dates', function (newValue, oldValue) {\n scope.dates = newValue;\n }, true);\n },\n controller: ['$scope', function ($scope) {\n var format = \"YYYY-MM-DD HH:mm\";\n function setDateTime(newFrom, newTo) {\n if (newFrom) {\n $scope.dates.from = document.getElementById('inputFrom').value = newFrom;\n }\n if (newTo) {\n $scope.dates.to = document.getElementById('inputTo').value = newTo;\n }\n }\n ;\n $scope.dates ? setDateTime($scope.dates.from, $scope.dates.to) : setDateTime(null, null);\n $scope.initDateTimeEvents = function () {\n var fromMoment = null,\n toMoment = null;\n\n // FUTURE: Refactor dateTimeFilter, or wrap it, to avoid jQuery bugs\n $('#' + $scope.dateTimeFilterParent).find('#dateTimeFilterFrom').datetimepicker({\n format: 'YYYY-MM-DD HH:mm',\n locale: 'sv'\n });\n $('#' + $scope.dateTimeFilterParent).find('#dateTimeFilterFrom').data().DateTimePicker.stepping(15);\n $('#' + $scope.dateTimeFilterParent).find('#dateTimeFilterTo').datetimepicker({\n format: 'YYYY-MM-DD HH:mm',\n locale: 'sv'\n });\n $('#' + $scope.dateTimeFilterParent).find('#dateTimeFilterTo').data().DateTimePicker.stepping(15);\n\n // Date time picker events\n $('#' + $scope.dateTimeFilterParent).find('#dateTimeFilterFrom').on('dp.change', function (ev) {\n if (!ev.date) {\n setDateTime(null, null);\n } else if (!toMoment || toMoment && ev.date.isSameOrBefore(toMoment)) {\n setDateTime(ev.date.format(format), null);\n fromMoment = moment(ev.date);\n } else {\n setDateTime(toMoment.format(format), null);\n fromMoment = moment(toMoment);\n }\n if (!$scope.$$phase) {\n $scope.$apply(); //$digest or $apply\n }\n });\n\n $('#' + $scope.dateTimeFilterParent).find('#dateTimeFilterTo').on('dp.change', function (ev) {\n if (!ev.date) {\n setDateTime(null, null);\n } else if (!fromMoment || fromMoment && ev.date.isSameOrAfter(fromMoment)) {\n setDateTime(null, ev.date.format(format));\n toMoment = moment(ev.date);\n } else {\n setDateTime(null, fromMoment.format(format));\n toMoment = moment(fromMoment);\n }\n if (!$scope.$$phase) {\n $scope.$apply(); //$digest or $apply\n }\n });\n };\n }]\n };\n}]);\n'use strict';\n\nangular.module('sp.directives').directive('gateBooking', ['$uibModal', '$rootScope', 'orderFormModalService', function ($uibModal, $rootScope, orderFormModalService) {\n return {\n restrict: 'A',\n scope: {\n orderId: \"=orderId\",\n formType: \"=formType\"\n },\n link: function link(scope, element, attrs) {\n element.bind('click', function () {\n var openModalInstance = function openModalInstance(formType, orderId, cpy, openModalInstanceForCpy) {\n var orderFormPromise;\n if (formType === 'create_order') {\n orderFormPromise = orderFormModalService.openCreate(OrderTypeEnum.GATE_BOOKING);\n } else if (formType === 'view_order') {\n orderFormPromise = orderFormModalService.openView(orderId, OrderTypeEnum.GATE_BOOKING, cpy);\n }\n orderFormPromise.then(function (results) {\n $rootScope.$broadcast('bookingOrderCreated'); // Refreshes BookingOrderTable\n if (results.copy) {\n openModalInstanceForCpy(formType, orderId, true, openModalInstanceForCpy);\n }\n });\n };\n openModalInstance(scope.formType, scope.orderId, false, openModalInstance);\n });\n }\n };\n}]);\n'use strict';\n\ndirectives.directive('notificationConfiguration', [function () {\n return {\n restrict: 'EA',\n scope: {\n notifications: \"=\",\n formLocked: \"=\"\n },\n templateUrl: 'assets/js/directives/notificationConfiguration/notification_configuration.html'\n };\n}]);\ndirectives.directive('orderHoverInfo', ['$translate', '$compile', function ($translate, $compile) {\n return {\n restrict: 'A',\n scope: {\n orderHoverInfo: '='\n },\n link: function link(scope, element, attrs) {\n if (!scope.orderHoverInfo) return;\n scope.creator = {};\n scope.receivers = [];\n angular.forEach(scope.orderHoverInfo.contacts, function (contact) {\n if (contact.ContactRoleId === ContactRoleEnum.ORDER_CREATOR) {\n scope.creator = contact;\n } else if (contact.ContactRoleId === ContactRoleEnum.DELIVERY_RECEIVER) {\n scope.receivers.push(contact);\n }\n });\n function createReceiverTemplate(index) {\n if (!scope.receivers[index].Name && !scope.receivers[index].Phone && !scope.receivers[index].Email) {\n return '';\n } else {\n // User input shall be written as {{userinput}} or ng-bind=\"userinput\" to prevent risk of XSS attacks.\n return '
' + '
' + (!!scope.receivers[index].Name ? '

' + '' + $translate.instant('RECEIVER') + ' ' + (index + 1) + ': ' + ' {{receivers[' + index + '].Name}} ' + '

' : '') + (!!scope.receivers[index].Phone ? '

' + '' + $translate.instant('PHONE_NUMBER') + ': ' + ' {{receivers[' + index + '].Phone}}' + '

' : '') + (!!scope.receivers[index].Email ? '

' + '' + $translate.instant('EMAIL') + ': ' + ' {{receivers[' + index + '].Email}} ' + '

' : '') + '
';\n }\n }\n var receiverTemplate = '';\n angular.forEach(scope.receivers, function (receiver, index) {\n receiverTemplate += createReceiverTemplate(index);\n });\n\n // User input shall be written as {{userinput}} or ng-bind=\"userinput\" to prevent risk of XSS attacks.\n var template = '
' + '
' + '
' + '
' + '
' + '' + '
' + '
{{orderHoverInfo.work_order_company_name}}
' + '
' + '
' + '
' + '
';\n\n // Important! Using $compile together with user input introduces a risk for XSS attacks, see https://docs.angularjs.org/guide/security.\n // To avoid user input to be complied to html, the user input must be evaluated AFTER the template has been complied.\n // Always make sure that the user input is displayed as string and not html, when making changes to the code. \n element.bind('mouseenter', function () {\n if (scope.orderHoverInfo.order_id === -1) return;\n element.append($compile(template)(scope));\n });\n element.bind('mouseleave', function () {\n scope.hoverInfoExpanded = false;\n element.find('.OrderHoverInfoWrapper').remove();\n });\n scope.stopEventPropagation = function (event) {\n event.stopPropagation();\n };\n scope.hoverInfoExpanded = false;\n }\n };\n}]);\nservices.service('quickGuideService', ['$uibModal', function ($uibModal) {\n this.openQuickGuide = function () {\n sessionStorage.hideQuickGuideThisSession = true;\n $uibModal.open({\n size: 'lg',\n templateUrl: \"assets/js/directives/quickGuide/quick_guide.html\",\n controller: ['$scope', '$uibModalInstance', '$localStorage', 'userFactory', 'errorService', 'languageFactory', function ($scope, $uibModalInstance, $localStorage, userFactory, errorService, languageFactory) {\n $scope.atPage = 0;\n var initialHideQuickGuideForUser = $scope.hideQuickGuideForUser = $localStorage.user.hideQuickGuideForUser,\n // checkbox\n sessionDivision = languageFactory.getLanguageDivision();\n $scope.sessionMainProject = $localStorage.user.session_main_project;\n var guides = [{\n url: 'assets/js/directives/quickGuide/guides/guide_start.html',\n divisions: ['bl', 'pl']\n }, {\n url: 'assets/js/directives/quickGuide/guides/guide_booking_and_deliveries.html',\n divisions: ['bl']\n }, {\n url: 'assets/js/directives/quickGuide/guides/guide_administrate.html',\n divisions: ['bl', 'pl']\n }, {\n url: 'assets/js/directives/quickGuide/guides/guide_archive.html',\n divisions: ['bl']\n }];\n $scope.allowedGuides = [];\n $scope.allowedGuide = function (divisions) {\n var allow = false;\n angular.forEach(divisions, function (division) {\n if (division === sessionDivision) {\n allow = true;\n }\n });\n return allow;\n };\n (function populateAllowedGuides() {\n angular.forEach(guides, function (guide) {\n if ($scope.allowedGuide(guide.divisions)) {\n $scope.allowedGuides.push(guide);\n }\n });\n })();\n $scope.incrementPage = function () {\n if ($scope.atPage < $scope.allowedGuides.length - 1) {\n $scope.atPage++;\n }\n };\n $scope.decrementPage = function () {\n if ($scope.atPage > 0) {\n $scope.atPage--;\n }\n };\n $scope.cancel = function () {\n if (initialHideQuickGuideForUser !== $scope.hideQuickGuideForUser) {\n userFactory.changeQuickGuideShown($scope.hideQuickGuideForUser).then(function () {\n $localStorage.user.hideQuickGuideForUser = $scope.hideQuickGuideForUser;\n });\n }\n $uibModalInstance.close();\n };\n }]\n });\n };\n}]);\n'use strict';\n\ndirectives.directive('quickGuide', ['quickGuideService', '$localStorage', function (quickGuideService, $localStorage) {\n return {\n restrict: 'A',\n scope: {},\n link: function link(scope, element, attrs, ctrl) {\n element.click(quickGuideService.openQuickGuide);\n }\n };\n}]);\ndirectives.directive(\"additionalServiceIcons\", function () {\n return {\n restrict: \"A\",\n scope: {\n additionalServiceTypeId: \"=\"\n },\n link: function link(scope, elem, attrs) {\n var className = '';\n if (scope.additionalServiceTypeId === AdditionalServiceTypeEnum.CARRYING) className = 'sp-AdditionalService-carry';\n if (scope.additionalServiceTypeId === AdditionalServiceTypeEnum.GUIDING) className = 'sp-AdditionalService-guide';\n if (scope.additionalServiceTypeId === AdditionalServiceTypeEnum.UNLOADING_HELP) className = 'sp-AdditionalService-unloading';\n if (scope.additionalServiceTypeId === AdditionalServiceTypeEnum.EXPRESS_DELIVERY) className = 'sp-AdditionalService-express';\n if (scope.additionalServiceTypeId === AdditionalServiceTypeEnum.QUITTANCE) className = 'sp-AdditionalService-quittance';\n if (scope.additionalServiceTypeId === AdditionalServiceTypeEnum.TIMING) className = 'sp-AdditionalService-timing';\n if (scope.additionalServiceTypeId === AdditionalServiceTypeEnum.UNPACKING) className = 'sp-AdditionalService-unpacking';\n if (scope.additionalServiceTypeId === AdditionalServiceTypeEnum.ARRIVAL_CONTROL) className = 'sp-AdditionalService-arrivalControl';\n elem.addClass(className);\n }\n };\n});\ndirectives.directive('sidemenu', function () {\n return {\n restrict: 'A',\n replace: true,\n templateUrl: \"app/shared/admin_side_menu.html\",\n controller: ['$rootScope', '$scope', '$uibModal', '$localStorage', 'roleService', function ($rootScope, $scope, $uibModal, $localStorage, roleService) {\n $scope.adminSideMenu = $localStorage.adminSideMenu;\n $scope.adminSideMenuVisible = function (bool) {\n $scope.adminSideMenu.visible = bool;\n $localStorage.adminSideMenu.visible = bool;\n };\n $scope.registerUser = function () {\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/customers/users/user_form.html',\n controller: 'UserInstanceController',\n size: 'lg',\n windowClass: 'sp-modal-window'\n });\n modalInstance.result.then(function (results) {\n console.log(\"modal exit\" + results);\n });\n };\n function identifyRoles() {\n $scope.isAdmin = roleService.isAdmin();\n $scope.isServicenter = roleService.isServicenter();\n $scope.isProjectOwner = roleService.isProjectOwner();\n $scope.isWarehousePlanner = roleService.isWarehousePlanner();\n $scope.isWarehouseOperator = roleService.isWarehouseOperator();\n $scope.isInternal = roleService.isInternal();\n $scope.isCustomer = roleService.isCustomer();\n }\n ;\n identifyRoles();\n $scope.$on('updatedUserData', function (event) {\n identifyRoles();\n });\n }]\n };\n});\n'use strict';\n\ndirectives.directive('dateTimePicker', function () {\n return {\n require: 'ngModel',\n restrict: 'A',\n link: function link(scope, element, attrs) {\n var modelName = attrs['dateTimePicker'];\n $(element).on('change paste keyup', function (ev) {\n scope.$parent.slot[modelName] = $(element).val();\n });\n }\n };\n});\ndirectives.directive('downloadFileLink', function () {\n return {\n restrict: 'E',\n replace: true,\n scope: {\n filePath: '@',\n titleText: '@',\n fileName: '@',\n mimeType: '@?',\n showIcon: '{{titleText}}' + '' + '',\n controller: ['$scope', '$http', function ($scope, $http) {\n $scope.downloadFile = function (filePath) {\n $http({\n url: filePath,\n method: 'GET',\n data: '',\n responseType: 'blob'\n }).then(function (result) {\n var blob = new Blob([result.data]);\n var url = window.URL || window.webkitURL;\n var fileURL = url.createObjectURL(blob);\n var downloadLink = angular.element(''); // Creating a new link that can have compiled url as href\n downloadLink.css({\n display: 'none'\n }); // Make sure it's not visible\n angular.element(document.body).append(downloadLink); // Required for (at least) FireFox https://stackoverflow.com/questions/32225904/programmatical-click-on-a-tag-not-working-in-firefox\n\n var link = downloadLink[0]; // Recover the tag from directive\n link.href = fileURL;\n link.download = $scope.fileName;\n link.target = '_self';\n link.click(); // Call click function\n });\n };\n }]\n };\n});\ndirectives.directive('fileModel', ['$parse', function ($parse) {\n return {\n restrict: 'A',\n link: function link(scope, element, attrs) {\n var model = $parse(attrs.fileModel);\n var isMultiple = attrs.multiple;\n var modelSetter = model.assign;\n element.bind('change', function () {\n var values = [];\n angular.forEach(element[0].files, function (item) {\n var value = {\n // File Name \n name: item.name,\n //File Size \n size: item.size,\n //File URL to view \n url: URL.createObjectURL(item),\n // File Input Value \n _file: item\n };\n values.push(value);\n });\n scope.$apply(function () {\n if (isMultiple) {\n modelSetter(scope, values);\n } else {\n modelSetter(scope, values[0]);\n }\n });\n });\n }\n };\n}]);\ndirectives.directive('footer', function () {\n return {\n restrict: 'E',\n replace: true,\n controllerAs: 'vm',\n templateUrl: \"app/shared/footer.html\",\n controller: ['$uibModal', '$rootScope', '$scope', 'authFactory', '$localStorage', 'languageFactory', 'roleService', function ($uibModal, $rootScope, $scope, authFactory, $localStorage, languageFactory, roleService) {\n var vm = this;\n function setMainProjectData() {\n vm.hasSessionMainProject = !!$localStorage.user.session_main_project;\n vm.isInternal = roleService.isInternal();\n if (vm.hasSessionMainProject) {\n vm.external_support_email = $localStorage.user.session_main_project.external_support_email;\n vm.external_support_phone_number = $localStorage.user.session_main_project.external_support_phone_number;\n vm.internal_support_email = $localStorage.user.session_main_project.internal_support_email;\n vm.internal_support_phone_number = $localStorage.user.session_main_project.internal_support_phone_number;\n }\n }\n setMainProjectData();\n $scope.$on('updatedUserData', function (event) {\n setMainProjectData();\n });\n }]\n };\n});\n'use strict';\n\ndirectives.directive('limitTo', ['$filter', function ($filter) {\n return {\n restrict: \"A\",\n link: function link(scope, elem, attrs) {\n var limit = parseInt(attrs.limitTo);\n angular.element(elem).on(\"keyup\", function (e) {\n var value = parseInt(this.value);\n if (value < 0 || value > limit || isNaN(value)) {\n this.value = 0;\n e.preventDefault();\n }\n });\n }\n };\n}]);\n'use strict';\n\ndirectives.directive('onFinishRender', ['$timeout', function ($timeout) {\n return {\n restrict: 'A',\n link: function link(scope, element, attr) {\n if (scope.$last === true) {\n $timeout(function () {\n var week_day = -1;\n if (scope.day) week_day = scope.day.week_day;\n scope.$emit(attr.onFinishRender, scope.$index, week_day); // index of last added slot, which day\n }, 0);\n }\n }\n };\n}]);\n'use strict';\n\ndirectives.directive('orderList', function () {\n return {\n restrict: 'E',\n replace: true,\n templateUrl: 'app/components/orders/order_list.html'\n };\n});\n'use strict';\n\ndirectives.directive('orderListMobile', function () {\n return {\n restrict: 'E',\n replace: true,\n templateUrl: 'app/components/orders/order_list_mobile.html'\n };\n});\n'use strict';\n\ndirectives.directive('orderPackageList', function () {\n return {\n restrict: 'E',\n replace: true,\n templateUrl: 'app/components/orders/order_package_list.html'\n };\n});\n'use strict';\n\ndirectives.directive('packageCollectionPackages', function () {\n return {\n restrict: 'E',\n replace: true,\n templateUrl: 'app/components/package_collection/package_collection_packages.html'\n };\n});\ndirectives.directive('passCodeStatusColor', function () {\n return {\n scope: {\n passCodeStatusColor: \"=\"\n },\n link: function link(scope, element, attributes) {\n switch (scope.passCodeStatusColor) {\n case PassCodeStatusEnum.REQUEST_SENT_HAS_ERROR:\n element.addClass(\"sp-red\");\n break;\n case PassCodeStatusEnum.PASSCODE_RECEIVED:\n element.addClass(\"sp-green\");\n break;\n case PassCodeStatusEnum.REQUEST_SENT:\n element.addClass(\"sp-blue\");\n break;\n case PassCodeStatusEnum.NO_REQUEST_SENT:\n element.addClass(\"sp-grey\");\n break;\n default:\n // Might not be a direct delivery\n }\n }\n };\n});\ndirectives.directive('phoneFilterDirective', ['$filter', function ($filter) {\n return {\n require: 'ngModel',\n link: function link(scope, element, attrs, modelController) {\n modelController.$parsers.push(function (input) {\n var transformedInput = $filter('phoneFilter')(input);\n if (transformedInput !== input) {\n modelController.$setViewValue(transformedInput);\n modelController.$render();\n }\n return transformedInput;\n });\n }\n };\n}]);\ndirectives.directive('strictNumberInputDirective', ['$filter', function ($filter) {\n return {\n require: 'ngModel',\n link: function link(scope, element, attrs, modelController) {\n modelController.$parsers.push(function (input) {\n var transformedInput = $filter('cleanNumberInput')(input);\n if (transformedInput !== input) {\n modelController.$setViewValue(transformedInput);\n modelController.$render();\n }\n return transformedInput;\n });\n }\n };\n}]);\ndirectives.directive('stringToNumber', function () {\n return {\n require: 'ngModel',\n link: function link(scope, element, attrs, ngModel) {\n ngModel.$parsers.push(function (value) {\n return '' + value;\n });\n ngModel.$formatters.push(function (value) {\n return parseFloat(value);\n });\n }\n };\n});\n'use strict';\n\nfactories.factory('authFactory', ['$http', 'ENV', '$httpParamSerializer', '$cookies', '$rootScope', '$localStorage', function ($http, ENV, $httpParamSerializer, $cookies, $rootScope, $localStorage) {\n var endPoint = ENV.apiEndpoint;\n var authFactory = {};\n authFactory.validateCaptcha = function (captchaToken) {\n var urlBase = '/validateCaptcha';\n var url = endPoint + urlBase;\n var data = {\n \"captchaToken\": captchaToken\n };\n var req = {\n method: 'POST',\n url: url,\n headers: {\n \"Content-type\": \"application/x-www-form-urlencoded; charset=utf-8\"\n },\n data: $httpParamSerializer(data)\n };\n return $http(req);\n };\n authFactory.login = function (username, password, captchaToken) {\n var urlBase = '/token';\n var url = endPoint + urlBase;\n var data = {\n \"grant_type\": \"password\",\n \"username\": username,\n \"password\": password,\n \"captchaToken\": captchaToken\n };\n var req = {\n method: 'POST',\n url: url,\n headers: {\n \"Content-type\": \"application/x-www-form-urlencoded; charset=utf-8\"\n },\n data: $httpParamSerializer(data)\n };\n return $http(req);\n };\n authFactory.getMe = function () {\n return $http.get(endPoint + '/api/Users/Me');\n };\n authFactory.logout = function () {\n $cookies.remove('access_token');\n $cookies.remove(\"user_role_id\");\n $cookies.remove(\"user_role_name\");\n $http.defaults.headers.common.Authorization = '';\n $localStorage.user = {\n isLoggedIn: false\n };\n delete sessionStorage.hideQuickGuideThisSession;\n $localStorage.adminSideMenu.visible = false;\n var isLoginPage = window.location.href.indexOf(\"/login\") !== -1;\n if (!isLoginPage) {\n window.location.href = \"/login\";\n }\n };\n authFactory.isLoggedIn = function () {\n if ($localStorage.user.isLoggedIn) {\n return true;\n } else return false;\n };\n authFactory.setAuthTokenAndRedirect = function () {\n var isLoginPage = window.location.href.indexOf(\"/login\") !== -1;\n var isActivatePage = window.location.href.indexOf(\"/activate\") !== -1;\n var isResetPage = window.location.href.indexOf(\"/reset\") !== -1;\n if (isLoginPage) {\n if ($localStorage.user.isLoggedIn) {\n $http.defaults.headers.common.Authorization = 'Bearer ' + $cookies.get(\"access_token\");\n window.location.href = \"/\";\n }\n } else if (isActivatePage) {\n if ($localStorage.user.isLoggedIn) {\n $http.defaults.headers.common.Authorization = 'Bearer ' + $cookies.get(\"access_token\");\n window.location.href = \"/\";\n }\n } else if (isResetPage) {\n if ($localStorage.user.isLoggedIn) {\n $http.defaults.headers.common.Authorization = 'Bearer ' + $cookies.get(\"access_token\");\n window.location.href = \"/\";\n }\n } else {\n if ($localStorage.user.isLoggedIn) {\n $http.defaults.headers.common.Authorization = 'Bearer ' + $cookies.get(\"access_token\");\n } else window.location.href = \"/login\";\n }\n };\n return authFactory;\n}]);\n'use strict';\n\nangular.module('sp.factories').factory('companyFactory', ['$http', 'ENV', '$httpParamSerializer', 'workOrderFactory', 'generalHelperService', 'notificationTemplateFactory', function ($http, ENV, $httpParamSerializer, workOrderFactory, generalHelperService, notificationTemplateFactory) {\n var urlBase = '/api/companies';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var divisionsUrlBase = '/api/Divisions';\n var divisionsUrl = endPoint + divisionsUrlBase;\n var companyFactory = {};\n\n /**\r\n * Retrieves an array of CompanyDTO instances from backend\r\n */\n companyFactory.getCompanies = function (includeInactive, divisionId) {\n var params = {\n includeInactive: includeInactive\n };\n return $http.get(divisionsUrl + '/' + divisionId + '/Companies' + '?' + $httpParamSerializer(params));\n };\n companyFactory.getCompany = function (id) {\n return $http.get(url + '/' + id);\n };\n companyFactory.createCompany = function (comp) {\n var out = JSON.stringify(comp);\n return $http.post(url, out);\n };\n companyFactory.updateCompany = function (id, comp) {\n var out = JSON.stringify(comp);\n return $http.put(url + '/' + id, out);\n };\n companyFactory.activateCompany = function (id) {\n return $http.put(url + '/' + id + '/activate');\n };\n companyFactory.deactivateCompany = function (id) {\n return $http.put(url + '/' + id + '/deactivate');\n };\n companyFactory.deleteCompany = function (id) {\n return $http.delete(url + '/' + id);\n };\n\n /**\r\n * Retrieves an array of ErpCompanyDTO instances from backend.\r\n */\n companyFactory.getErpCompanies = function (divisionId) {\n return $http.get(divisionsUrl + '/' + divisionId + '/ErpCompanies');\n };\n\n /**\r\n * Retrieves an array of ErpWorkOrderDTO instances from backend.\r\n */\n companyFactory.getErpWorkOrders = function (companyId) {\n return $http.get(url + '/' + companyId + '/ErpWorkOrders');\n };\n companyFactory.getFilterableCompanies = function (mainProjectId, includeDeleted, includeInactive) {\n var params = {\n mainProjectId: mainProjectId,\n includeDeleted: includeDeleted,\n includeInactive: includeInactive\n };\n return $http.get(url + '/FilterableCompanies?' + $httpParamSerializer(params));\n };\n companyFactory.repackageCompanyDTOArray = function (companyDTOArray) {\n var companyArray = [];\n if (!companyDTOArray) {\n return [];\n }\n angular.forEach(companyDTOArray, function (companyDTO) {\n companyArray.push(companyFactory.repackageCompanyDTO(companyDTO));\n });\n companyArray.sort(compareCompanies);\n return companyArray;\n };\n companyFactory.repackageErpCompanyDTOArray = function (erpCompanyDTOArray) {\n if (!erpCompanyDTOArray) return [];\n var erpCompanyArray = [];\n angular.forEach(erpCompanyDTOArray, function (erpCompanyDTO) {\n erpCompanyArray.push(repackageErpCompanyDTO(erpCompanyDTO));\n });\n erpCompanyArray.sort(compareCompanies);\n return erpCompanyArray;\n };\n companyFactory.repackageCompanyDTO = function (companyDTO) {\n var company = {\n work_orders: workOrderFactory.repackageWorkOrderDTOArray(companyDTO.WorkOrders),\n // FUTURE performance: Is this used? Could it be avoided to read the WorkOrders in some cases for performance?\n company_id: companyDTO.CompanyId,\n company_name: companyDTO.Name,\n company_display_name: companyDTO.Name,\n // FUTURE (SPL112): Should really be companyDisplayName(companyDTO.Name, companyDTO.ErpSystemCompanyNo), but this is currently done by BE\n organization_number: companyDTO.OrganizationNumber,\n street_address: companyDTO.StreetAddress,\n zip_code: companyDTO.ZipCode,\n city: companyDTO.City,\n contact: companyDTO.Contact,\n phone: companyDTO.Phone,\n sms: companyDTO.Sms,\n email: companyDTO.Email,\n erp_system_company_no: companyDTO.ErpSystemCompanyNo,\n is_active: companyDTO.IsActive,\n comments: companyDTO.Comments,\n notification_configuration: notificationTemplateFactory.extendTemplatesWithNames(companyDTO.NotificationTemplates)\n };\n return company;\n };\n companyFactory.packageCompany = function (company, divisionId) {\n var companyDTO = {\n \"CompanyId\": company.company_id,\n \"Name\": company.company_name,\n \"OrganizationNumber\": company.organization_number,\n \"StreetAddress\": company.street_address,\n \"ZipCode\": company.zip_code,\n \"City\": company.city,\n \"Contact\": company.contact,\n \"Phone\": company.phone,\n \"Sms\": company.sms,\n \"Email\": company.email,\n \"ErpSystemCompanyNo\": company.erp_system_company_no,\n \"IsActive\": company.is_active,\n \"Comments\": company.comments,\n \"NotificationTemplates\": company.notification_configuration,\n \"DivisionId\": divisionId\n };\n return companyDTO;\n };\n function repackageErpCompanyDTO(erpCompanyDto) {\n var erpCompany = {\n erp_system_company_no: erpCompanyDto.CompanyNo,\n company_name: erpCompanyDto.Name,\n company_display_name: companyDisplayName(erpCompanyDto.Name, erpCompanyDto.CompanyNo),\n organization_number: erpCompanyDto.OrganizationNumber\n };\n return erpCompany;\n }\n function companyDisplayName(name, erpCompanyNo) {\n return name + (erpCompanyNo ? \" (\" + erpCompanyNo + \")\" : \"\");\n }\n\n /**\r\n * Define a sort order for companies.\r\n * Must work both for companies and erpCompanies\r\n */\n function compareCompanies(company1, company2) {\n return company1.company_display_name.localeCompare(company2.company_display_name);\n }\n return companyFactory;\n}]);\n'use strict';\n\nfactories.factory('contactFactory', ['$http', 'ENV', '$httpParamSerializer', function ($http, ENV, $httpParamSerializer) {\n var urlBase = '/api/contacts';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var contactFactory = {};\n contactFactory.getContacts = function (mainProjectId, includeInactive) {\n var params = {\n mainProjectId: mainProjectId,\n includeInactive: includeInactive\n };\n return $http.get(url + '?' + $httpParamSerializer(params));\n };\n contactFactory.getContact = function (id) {\n return $http.get(url + '/' + id);\n };\n contactFactory.createContact = function (type) {\n var out = JSON.stringify(type);\n return $http.post(url, out);\n };\n contactFactory.updateContact = function (id, type) {\n var out = JSON.stringify(type);\n return $http.put(url + '/' + id, out);\n };\n contactFactory.activateContacts = function (ids) {\n var out = JSON.stringify(ids);\n return $http.put(url + '/activate', out);\n };\n contactFactory.deactivateContacts = function (ids) {\n var out = JSON.stringify(ids);\n return $http.put(url + '/deactivate', out);\n };\n contactFactory.deleteContact = function (id) {\n return $http.delete(url + '/' + id);\n };\n contactFactory.repackageDTO = function (DTO) {\n return {\n contact_id: DTO.ContactId,\n name: DTO.Name,\n phone: DTO.Phone,\n email: DTO.Email,\n company: DTO.Company,\n company_and_name: DTO.Company ? \"(\" + DTO.Company + \") \" + DTO.Name : DTO.Name,\n description: DTO.Description,\n main_project_id: DTO.MainProjectId,\n is_active: DTO.IsActive\n };\n };\n contactFactory.repackageDTOArray = function (DTOArray) {\n var repackagedDTOArray = [];\n if (!DTOArray) {\n return [];\n }\n angular.forEach(DTOArray, function (DTO) {\n repackagedDTOArray.push(contactFactory.repackageDTO(DTO));\n });\n return repackagedDTOArray;\n };\n return contactFactory;\n}]);\n'use strict';\n\nfactories.factory(\"deliveryFactory\", ['$http', 'ENV', '$filter', '$translate', function ($http, ENV, $filter, $translate) {\n var urlBase = '/api/deliveries';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var deliveryFactory = {};\n deliveryFactory.getDeliveriesByDate = function (date, mainProjectId) {\n return $http.get(url + '/ByDate/' + date + '?mainProjectId=' + mainProjectId);\n };\n deliveryFactory.getDelivery = function (id) {\n return $http.get(url + '/' + id);\n };\n deliveryFactory.updateDelivery = function (id, deliveryDTO) {\n var out = JSON.stringify(deliveryDTO);\n return $http.put(url + '/' + id, out);\n };\n deliveryFactory.confirmDelivery = function (id) {\n return $http.put(url + '/' + id + '/confirm');\n };\n deliveryFactory.deliverDelivery = function (id) {\n return $http.put(url + '/' + id + '/deliver');\n };\n deliveryFactory.deleteDelivery = function (id) {\n return $http.delete(url + '/' + id);\n };\n deliveryFactory.assignOrdersToNewRoute = function (assignOrdersToNewRouteDeliveryDTO) {\n var jsonDto = JSON.stringify(assignOrdersToNewRouteDeliveryDTO);\n return $http.put(url + '/AssignOrdersToNewRouteDelivery', jsonDto);\n };\n deliveryFactory.assignOrdersToRoute = function (outObj) {\n var out = JSON.stringify(outObj);\n return $http.put(url + '/AssignOrdersToRouteDelivery', out);\n };\n deliveryFactory.assignOrdersToNewInternalTransport = function (outObj) {\n var out = JSON.stringify(outObj);\n return $http.put(url + '/AssignOrdersToNewInternalTransportDelivery', out);\n };\n deliveryFactory.assignOrdersToNewExternalTransport = function (outObj) {\n var out = JSON.stringify(outObj);\n return $http.put(url + '/AssignOrdersToNewExternalTransportDelivery', out);\n };\n deliveryFactory.assignOrdersTransport = function (outObj) {\n var out = JSON.stringify(outObj);\n return $http.put(url + '/AssignOrdersToTransportDelivery', out);\n };\n function loadOrders(orders, destinationMappingIndex) {\n var newOrders = [];\n angular.forEach(orders, function (order) {\n newOrders.push({\n order_id: order.OrderId,\n task_id: order.TaskId,\n order_number: order.OrderNumber,\n order_type: order.OrderType,\n task_status: order.TaskStatus,\n destination: destinationMappingIndex,\n package_count: order.SpecifiedPackageCount,\n package_weight: order.SpecifiedPackageWeight,\n pallet_count: order.SpecifiedPalletCount,\n pallet_weight: order.SpecifiedPalletWeight,\n other_count: order.SpecifiedOtherCount,\n other_weight: order.SpecifiedOtherWeight,\n content: order.Content,\n work_order_name: order.WorkOrderName,\n receiver_name: order.OrderReceiverName,\n receiver_phone: order.OrderReceiverPhone,\n erp_system_reference: order.ErpSystemReference,\n total_count: order.SpecifiedPackageCount + order.SpecifiedPalletCount + order.SpecifiedOtherCount,\n total_weight: order.SpecifiedPackageWeight + order.SpecifiedPalletWeight + order.SpecifiedOtherWeight,\n additional_services: order.AdditionalServices\n });\n });\n return newOrders;\n }\n function loadDeliveryLocations(deliveryLocationDTOArray) {\n var newDeliveryLocations = [];\n var locationMappingIndex = 0;\n angular.forEach(deliveryLocationDTOArray, function (location) {\n newDeliveryLocations.push({\n drop_location_id: location.DropLocationId,\n drop_location_name: location.DropLocationName,\n destination_location_path: location.DestinationLocationPath,\n address: location.Address,\n zip_code: location.ZipCode,\n city: location.City,\n orders: loadOrders(location.Orders, locationMappingIndex)\n });\n locationMappingIndex++;\n });\n return newDeliveryLocations;\n }\n deliveryFactory.createDTO = function (delivery) {\n return {\n \"DeliveryId\": delivery.delivery_id,\n \"DeliveryTypeId\": delivery.delivery_type_id,\n \"DeliveryStatusTypeId\": delivery.delivery_status_type_id,\n \"DeliveryDate\": delivery.delivery_date,\n \"ShippingId\": delivery.shipping_id,\n \"Capacity\": delivery.capacity,\n \"CurrentWeight\": delivery.current_weight,\n \"Time\": delivery.time,\n \"VehicleId\": delivery.vehicle_id,\n \"DeliveryLocations\": delivery.original_delivery_locations\n };\n };\n deliveryFactory.repackageDTO = function (deliveryDTO) {\n var delivery = {\n delivery_id: deliveryDTO.DeliveryId,\n delivery_type_id: deliveryDTO.DeliveryTypeId,\n delivery_status_type_id: deliveryDTO.DeliveryStatusTypeId,\n shipping_id: deliveryDTO.ShippingId,\n shipping_name: deliveryDTO.ShippingName,\n delivery_date: deliveryDTO.DeliveryDate,\n time: deliveryDTO.Time ? $filter('toTime')(deliveryDTO.Time) : '',\n vehicle_id: deliveryDTO.VehicleId,\n vehicle_name: deliveryDTO.VehicleName,\n capacity: deliveryDTO.Capacity,\n current_weight: deliveryDTO.CurrentWeight,\n current_weight_include_specified: deliveryDTO.CurrentWeightIncludeSpecified,\n delivery_locations: loadDeliveryLocations(deliveryDTO.DeliveryLocations),\n original_delivery_locations: deliveryDTO.DeliveryLocations\n };\n if (deliveryDTO.DeliveryTypeId === DeliveryTypeEnum.ROUTE_DELIVERY) {\n delivery.full_name = deliveryDTO.RouteName;\n delivery.route_name = deliveryDTO.RouteName;\n delivery.route_id = deliveryDTO.RouteId;\n delivery.is_template = deliveryDTO.RouteIsTemplate;\n delivery.source_template_id = deliveryDTO.RouteSourceTemplateId;\n if (deliveryDTO.RouteDeliveryTimeTypeId === DeliveryTimeTypeEnum.SPECIFIC) {\n delivery.full_name += ' ' + delivery.time;\n } else if (deliveryDTO.RouteDeliveryTimeTypeId === DeliveryTimeTypeEnum.FORENOON) {\n delivery.full_name += ' ' + $translate.instant('FORENOON_SHORT');\n } else if (deliveryDTO.RouteDeliveryTimeTypeId === DeliveryTimeTypeEnum.AFTERNOON) {\n delivery.full_name += ' ' + $translate.instant('AFTERNOON_SHORT');\n }\n } else {\n var timeString = delivery.time ? \" \" + delivery.time : \"\";\n if (typeof delivery.vehicle_name !== 'undefined' && delivery.vehicle_name !== null) {\n delivery.transport_name = delivery.vehicle_name + timeString;\n } else if (typeof delivery.shipping_name !== 'undefined' && delivery.shipping_name !== null) {\n delivery.transport_name = delivery.shipping_name + timeString;\n } else {\n delivery.transport_name = \"- No name -\" + timeString;\n }\n }\n return delivery;\n };\n deliveryFactory.repackageDTOArray = function (deliveryDtoArray) {\n if (!deliveryDtoArray) {\n return [];\n }\n var deliveryArray = [];\n angular.forEach(deliveryDtoArray, function (deliveryDTO) {\n deliveryArray.push(deliveryFactory.repackageDTO(deliveryDTO));\n });\n return deliveryArray;\n };\n return deliveryFactory;\n}]);\n'use strict';\n\nfactories.factory('deviationCodeFactory', ['$http', 'ENV', function ($http, ENV) {\n var urlBase = '/api/deviationcodes';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var deviationCodeFactory = {};\n deviationCodeFactory.getDeviationCodes = function () {\n return $http.get(url);\n };\n deviationCodeFactory.getDeviationCode = function (id) {\n return $http.get(url + '/' + id);\n };\n deviationCodeFactory.createDeviationCode = function (comp) {\n var out = JSON.stringify(comp);\n return $http.post(url, out);\n };\n deviationCodeFactory.updateDeviationCode = function (id, comp) {\n var out = JSON.stringify(comp);\n return $http.put(url + '/' + id, out);\n };\n deviationCodeFactory.activateDeviationCode = function (id) {\n return $http.put(url + '/' + id + '/activate');\n };\n deviationCodeFactory.deactivateDeviationCode = function (id) {\n return $http.put(url + '/' + id + '/deactivate');\n };\n deviationCodeFactory.deleteDeviationCode = function (id) {\n return $http.delete(url + '/' + id);\n };\n deviationCodeFactory.repackageDTO = function (DTO) {\n return {\n deviation_code_id: DTO.DeviationCodeId,\n deviation_code_name: DTO.Name,\n is_active: DTO.IsActive\n };\n };\n deviationCodeFactory.repackageDTOArray = function (DTOArray) {\n var repackagedDTOArray = [];\n if (!DTOArray) {\n return [];\n }\n angular.forEach(DTOArray, function (DTO) {\n repackagedDTOArray.push(deviationCodeFactory.repackageDTO(DTO));\n });\n return repackagedDTOArray;\n };\n return deviationCodeFactory;\n}]);\n'use strict';\n\nfactories.factory('divisionFactory', ['$http', 'ENV', function ($http, ENV) {\n var urlBase = '/api/divisions';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var divisionFactory = {};\n divisionFactory.getDivisions = function () {\n return $http.get(url);\n };\n divisionFactory.getDivision = function (id) {\n return $http.get(url + '/' + id);\n };\n divisionFactory.updateDivision = function (id, division) {\n var out = JSON.stringify(division);\n return $http.put(url + '/' + id, out);\n };\n divisionFactory.createDTO = function (division) {\n return {\n \"DivisionId\": division.division_id,\n \"Name\": division.division_name\n };\n };\n divisionFactory.repackageDTO = function (DTO) {\n return {\n division_id: DTO.DivisionId,\n division_name: DTO.Name\n };\n };\n divisionFactory.repackageDTOArray = function (DTOArray) {\n var repackagedDTOArray = [];\n if (!DTOArray) {\n return [];\n }\n angular.forEach(DTOArray, function (DTO) {\n repackagedDTOArray.push(divisionFactory.repackageDTO(DTO));\n });\n return repackagedDTOArray;\n };\n return divisionFactory;\n}]);\n'use strict';\n\nfactories.factory('gateFactory', ['$http', '$q', 'ENV', function ($http, $q, ENV) {\n var urlBase = '/api/gates';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var gateFactory = {};\n gateFactory.getGates = function () {\n // Disabled until further notice as of SPL338.\n return $q.resolve({\n data: []\n });\n //return $http.get(url);\n };\n\n gateFactory.getGatesByMainProjectId = function (mainProjectId) {\n // Disabled until further notice as of SPL338.\n return $q.resolve({\n data: []\n });\n //return $http.get(url, { params: { mainProjectId: mainProjectId } });\n };\n\n gateFactory.getGate = function (id) {\n return $http.get(url + '/' + id);\n };\n gateFactory.createGate = function (gate) {\n var out = JSON.stringify(gate);\n return $http.post(url, out);\n };\n gateFactory.updateGate = function (id, gate) {\n var out = JSON.stringify(gate);\n return $http.put(url + '/' + id, out);\n };\n gateFactory.activateGate = function (id) {\n return $http.put(url + '/' + id + '/activate');\n };\n gateFactory.deactivateGate = function (id) {\n return $http.put(url + '/' + id + '/deactivate');\n };\n gateFactory.deleteGate = function (id) {\n return $http.delete(url + '/' + id);\n };\n gateFactory.repackageDTO = function (DTO) {\n return {\n gate_id: DTO.GateId,\n gate_name: DTO.Name,\n system_gate_name: DTO.SystemName,\n gate_location: DTO.Location,\n project_id: DTO.ProjectId,\n project_name: DTO.ProjectName,\n main_project_id: DTO.MainProjectId,\n is_active: DTO.IsActive,\n comments: DTO.Comments\n };\n };\n gateFactory.repackageDTOArray = function (DTOArray) {\n var repackagedDTOArray = [];\n if (!DTOArray) {\n return [];\n }\n angular.forEach(DTOArray, function (DTO) {\n repackagedDTOArray.push(gateFactory.repackageDTO(DTO));\n });\n return repackagedDTOArray;\n };\n return gateFactory;\n}]);\n'use strict';\n\nfactories.factory('gatePassFactory', ['$http', '$q', 'ENV', function ($http, $q, ENV) {\n var urlBase = '/api/gatePasses';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var gatePassFactory = {};\n gatePassFactory.getAllGatePasses = function () {\n // Disabled until further notice as of SPL338.\n return $q.resolve({\n data: []\n });\n //return $http.get(url);\n };\n\n return gatePassFactory;\n}]);\n'use strict';\n\nfactories.factory('languageFactory', ['$translate', '$rootScope', function ($translate, $rootScope) {\n var languageFactory = {};\n languageFactory.supportedLanguages = ['sv', 'en'];\n languageFactory.setLanguageIfNone = function () {\n if (typeof localStorage.NG_TRANSLATE_LANG_KEY === 'undefined') {\n localStorage.NG_TRANSLATE_LANG_KEY = 'sv_bl';\n $translate.use('sv_bl');\n }\n if ($rootScope.lang_prefix === '' || typeof $rootScope.lang_prefix === 'undefined') {\n languageFactory.changeLanguage(localStorage.NG_TRANSLATE_LANG_KEY);\n }\n };\n languageFactory.changeLanguage = function (langKey) {\n var keySplit = langKey.split('_');\n var langPrefix = keySplit[0];\n var langSuffix = '_' + keySplit[1];\n $rootScope.lang_prefix = langPrefix;\n $rootScope.lang_suffix = '_' + langSuffix;\n $translate.use(langKey);\n };\n languageFactory.changeBaseLanguage = function (baseLang) {\n var oldLang = localStorage.NG_TRANSLATE_LANG_KEY;\n var newLang = baseLang + '_' + oldLang.split('_')[1];\n $rootScope.lang_prefix = baseLang;\n $translate.use(newLang);\n };\n languageFactory.changeLanguageDivision = function (langDivision) {\n var oldLang = localStorage.NG_TRANSLATE_LANG_KEY;\n var newLang = oldLang.split('_')[0] + '_' + langDivision;\n $rootScope.lang_suffix = '_' + langDivision;\n $translate.use(newLang);\n };\n languageFactory.getLanguageDivision = function () {\n var langKey = localStorage.NG_TRANSLATE_LANG_KEY;\n return divisionKey = langKey.split('_')[1] || '';\n };\n languageFactory.changeLanguageByDivisionId = function (divisionId) {\n switch (divisionId) {\n case DivisionTypeEnum.CONSTRUCTION:\n languageFactory.changeLanguageDivision('bl');\n break;\n case DivisionTypeEnum.PRODUCTION:\n languageFactory.changeLanguageDivision('pl');\n break;\n default:\n languageFactory.changeLanguageDivision('bl');\n }\n };\n return languageFactory;\n}]);\n'use strict';\n\nangular.module('sp.factories').factory('locationFactory', ['$http', '$httpParamSerializer', 'ENV', function ($http, $httpParamSerializer, ENV) {\n var urlBase = '/api/locations';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var locationFactory = {};\n locationFactory.getLocations = function (mainProjectId) {\n var params = {\n mainProjectId: mainProjectId\n };\n return $http.get(url + '?' + $httpParamSerializer(params));\n };\n locationFactory.getLocation = function (id) {\n return $http.get(url + '/' + id);\n };\n locationFactory.createLocation = function (loc) {\n var out = JSON.stringify(loc);\n return $http.post(url, out);\n };\n locationFactory.updateLocation = function (id, loc) {\n var out = JSON.stringify(loc);\n return $http.put(url + '/' + id, out);\n };\n locationFactory.activateLocation = function (id) {\n return $http.put(url + '/' + id + '/activate');\n };\n locationFactory.deactivateLocation = function (id) {\n return $http.put(url + '/' + id + '/deactivate');\n };\n locationFactory.deleteLocation = function (id) {\n return $http.delete(url + '/' + id);\n };\n locationFactory.getLocationTreeRules = function (divisionId) {\n return $http.get(url + '/typetree/' + divisionId);\n };\n locationFactory.getFilterableVehicleDropLocations = function (mainProjectId, includeDeleted, includeInactive) {\n console.log(\"getFilterableVehicleDropLocations includeDeleted=\" + includeDeleted + \" includeInactive=\" + includeInactive);\n var params = {\n mainProjectId: mainProjectId,\n includeDeleted: includeDeleted,\n includeInactive: includeInactive\n };\n return $http.get(url + '/FilterableVehicleDropLocations?' + $httpParamSerializer(params));\n };\n locationFactory.getFilterableResourceLocations = function (mainProjectId, includeDeleted, includeInactive) {\n var params = {\n mainProjectId: mainProjectId,\n includeDeleted: includeDeleted,\n includeInactive: includeInactive\n };\n return $http.get(url + '/FilterableResourceLocations?' + $httpParamSerializer(params));\n };\n locationFactory.getDestinationLocations = function (mainProjectId) {\n var params = {\n mainProjectId: mainProjectId\n };\n return $http.get(url + '/DestinationLocations?' + $httpParamSerializer(params));\n };\n locationFactory.createDTO = function (location) {\n return {\n \"Name\": location.location_name,\n \"LocationId\": location.location_id,\n \"ParentLocationId\": location.parent_location_id,\n \"LocationTypeId\": location.location_type_id,\n \"Level\": location.level,\n \"SortOrder\": location.sort_order,\n \"IsActive\": true,\n \"IsScannable\": location.is_scannable,\n \"Comments\": location.comments,\n \"RootMainProjectId\": location.root_main_project_id\n };\n };\n locationFactory.repackageDTO = function (DTO) {\n var out = {\n location_id: DTO.LocationId,\n location_type_id: DTO.LocationTypeId,\n location_type_name: DTO.LocationTypeAlias,\n location_name: DTO.Name,\n parent_location_id: DTO.ParentLocationId,\n child_location_type_ids: DTO.ChildLocationTypeIds,\n root_main_project_id: DTO.RootMainProjectId,\n is_scannable: DTO.IsScannable,\n is_active: DTO.IsActive,\n comments: DTO.Comments,\n level: DTO.Level,\n sort_order: DTO.SortOrder,\n collapsed: true,\n show: false\n };\n switch (DTO.LocationTypeId) {\n case LocationTypeEnum.MAIN_PROJECT:\n out.main_project_id = DTO.MainProjectId;\n break;\n case LocationTypeEnum.PROJECT:\n out.project_id = DTO.ProjectId;\n break;\n case LocationTypeEnum.SUB_PROJECT:\n out.sub_project_id = DTO.SubProjectId;\n break;\n default:\n // Other cases needs not to have an extra variable as the projects do.\n }\n\n return out;\n };\n locationFactory.repackageDTOArray = function (DTOArray) {\n var repackagedDTOArray = [];\n if (!DTOArray) {\n return [];\n }\n angular.forEach(DTOArray, function (DTO) {\n repackagedDTOArray.push(locationFactory.repackageDTO(DTO));\n });\n return repackagedDTOArray;\n };\n return locationFactory;\n}]);\n'use strict';\n\nfactories.factory('mainProjectFactory', ['$http', 'ENV', '$translate', 'generalHelperService', function ($http, ENV, $translate, generalHelperService) {\n var urlBase = '/api/mainprojects';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var mainProjectFactory = {};\n mainProjectFactory.getMainProjects = function () {\n return $http.get(url);\n };\n mainProjectFactory.getMainProject = function (id) {\n return $http.get(url + '/' + id);\n };\n mainProjectFactory.createMainProject = function (project) {\n var out = JSON.stringify(project);\n return $http.post(url, out);\n };\n mainProjectFactory.updateMainProject = function (id, project) {\n var out = JSON.stringify(project);\n return $http.put(url + '/' + id, out);\n };\n mainProjectFactory.activateMainProject = function (id) {\n return $http.put(url + '/' + id + '/activate');\n };\n mainProjectFactory.deactivateMainProject = function (id) {\n return $http.put(url + '/' + id + '/deactivate');\n };\n mainProjectFactory.deleteMainProject = function (id) {\n return $http.delete(url + '/' + id);\n };\n mainProjectFactory.createLesDTO = function (les) {\n return {\n \"LesParameterId\": les.LesParameterId ? les.LesParameterId : null,\n \"LesParameterTypeId\": les.LesParameterTypeId,\n \"LesParameterTypeName\": les.LesParameterTypeName,\n \"MainProjectId\": les.MainProjectId,\n \"Value\": les.Value\n };\n };\n mainProjectFactory.createDTO = function (mainProject) {\n return {\n \"Name\": mainProject.main_project_name,\n \"MainProjectId\": mainProject.main_project_id,\n \"GroupageAreaName\": mainProject.groupage_area_name,\n \"ShortName\": mainProject.main_project_short_name,\n \"City\": mainProject.city,\n \"ArticleNumber\": mainProject.main_project_article_number,\n \"DivisionId\": mainProject.division_id,\n \"IsActive\": mainProject.is_active,\n \"Comments\": mainProject.comments,\n \"Phone\": mainProject.external_support_phone_number,\n \"Email\": mainProject.external_support_email,\n \"PhoneInternal\": mainProject.internal_support_phone_number,\n \"EmailInternal\": mainProject.internal_support_email,\n \"HoursToMinOrderDate\": mainProject.main_project_hours_to_min_order_date,\n \"IsFinalDestinationRequired\": mainProject.is_final_destination_required,\n \"IsBillable\": mainProject.is_billable,\n \"SendSmsNotificationsByDefault\": mainProject.send_sms_notifications_by_default,\n \"IsDirectDeliveryFunctionEnabled\": mainProject.is_direct_delivery_function_enabled,\n \"IsTransshipmentFunctionEnabled\": mainProject.is_transshipment_function_enabled,\n \"IsStoringFunctionEnabled\": mainProject.is_storing_function_enabled,\n \"IsMaterialOrderFunctionEnabled\": mainProject.is_material_order_function_enabled,\n \"IsResourceBookingFunctionEnabled\": mainProject.is_resource_booking_function_enabled,\n \"IsWarehouseBalanceFunctionEnabled\": mainProject.is_warehouse_balance_function_enabled,\n \"IsPlanTransportFunctionEnabled\": mainProject.is_plan_transport_function_enabled,\n \"LesParameters\": mainProject.les_parameters\n };\n };\n mainProjectFactory.repackageDTO = function (DTO) {\n return {\n main_project_name: DTO.Name,\n main_project_id: DTO.MainProjectId,\n main_project_short_name: DTO.ShortName,\n groupage_area_name: DTO.GroupageAreaName,\n city: DTO.City,\n main_project_article_number: DTO.ArticleNumber,\n division_id: DTO.DivisionId,\n division_name: $translate.instant(generalHelperService.getKeyByValue(DivisionTypeEnum, DTO.DivisionId)),\n is_active: DTO.IsActive,\n comments: DTO.Comments,\n external_support_phone_number: DTO.Phone,\n external_support_email: DTO.Email,\n internal_support_phone_number: DTO.PhoneInternal ? DTO.PhoneInternal : '---',\n internal_support_email: DTO.EmailInternal ? DTO.EmailInternal : '---',\n main_project_hours_to_min_order_date: DTO.HoursToMinOrderDate,\n is_final_destination_required: DTO.IsFinalDestinationRequired,\n is_billable: DTO.IsBillable,\n send_sms_notifications_by_default: DTO.SendSmsNotificationsByDefault,\n is_direct_delivery_function_enabled: DTO.IsDirectDeliveryFunctionEnabled,\n is_transshipment_function_enabled: DTO.IsTransshipmentFunctionEnabled,\n is_storing_function_enabled: DTO.IsStoringFunctionEnabled,\n is_material_order_function_enabled: DTO.IsMaterialOrderFunctionEnabled,\n is_resource_booking_function_enabled: DTO.IsResourceBookingFunctionEnabled,\n is_warehouse_balance_function_enabled: DTO.IsWarehouseBalanceFunctionEnabled,\n is_plan_transport_function_enabled: DTO.IsPlanTransportFunctionEnabled,\n les_parameters_dto: DTO.LesParameters\n };\n };\n mainProjectFactory.repackageDTOArray = function (DTOArray) {\n var repackagedDTOArray = [];\n if (!DTOArray) {\n return [];\n }\n angular.forEach(DTOArray, function (DTO) {\n repackagedDTOArray.push(mainProjectFactory.repackageDTO(DTO));\n });\n return repackagedDTOArray;\n };\n return mainProjectFactory;\n}]);\n'use strict';\n\nangular.module('sp.factories').factory('mainProjectFileFactory', ['$http', '$filter', 'ENV', '$httpParamSerializer', 'errorService', 'ngToast', function ($http, $filter, ENV, $httpParamSerializer, errorService, ngToast) {\n var urlBase = '/api/mainProjectFiles';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var mainProjectFileFactory = {};\n mainProjectFileFactory.saveFile = function (file, mainProjectFileId) {\n var formData = new FormData();\n formData.append('file', file._file);\n\n // Shall send content type 'multipart/form-data'.\n // This is needed to overwrite default value 'application/json', see https://stackoverflow.com/questions/41607656/purpose-of-content-type-undefined-in-angularjs-fileupload\n var config = {\n headers: {\n 'Content-Type': undefined\n }\n };\n var resultPromise = $http.post(url + \"/\" + mainProjectFileId + \"/file\", formData, config);\n resultPromise.catch(function () {\n ngToast.danger(\"Filuppladdning av '\" + file._file.name + \"' misslyckades.\");\n });\n return resultPromise;\n };\n mainProjectFileFactory.getMainProjectFileUrl = function (mainProjectFileId) {\n return url + \"/\" + mainProjectFileId + \"/file\";\n };\n mainProjectFileFactory.createMainProjectFile = function (mainProjectFile, file) {\n var json = JSON.stringify(mainProjectFile);\n return $http.post(url, json).then(function (response) {\n return mainProjectFileFactory.saveFile(file, response.data);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n mainProjectFileFactory.getMainProjectFiles = function (mainProjectId) {\n var params = {\n mainProjectId: mainProjectId\n };\n return $http.get(url + '/?' + $httpParamSerializer(params));\n };\n mainProjectFileFactory.getMainProjectFile = function (mainProjectFileId) {\n return $http.get(url + '/' + mainProjectFileId);\n };\n mainProjectFileFactory.updateMainProjectFile = function (id, mainProjectFile, file) {\n var json = JSON.stringify(mainProjectFile);\n if (!file) return $http.put(url + \"/\" + id, json);\n return $http.put(url + \"/\" + id, json).then(function (response) {\n return mainProjectFileFactory.saveFile(file, id);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n mainProjectFileFactory.deleteMainProjectFile = function (mainProjectFileId) {\n return $http.delete(url + \"/\" + mainProjectFileId);\n };\n mainProjectFileFactory.repackageDTO = function (DTO) {\n var repackagedDTO = {\n mainProjectFileId: DTO.MainProjectFileId,\n header: DTO.Header,\n fileName: DTO.File != null ? DTO.File.FileName : \"\",\n fileUploaded: $filter('toDateTime')(DTO.FileUploaded),\n file: DTO.File != null ? DTO.File : {},\n comments: DTO.Comments\n };\n repackagedDTO.file.FileUrl = mainProjectFileFactory.getMainProjectFileUrl(DTO.MainProjectFileId);\n return repackagedDTO;\n };\n mainProjectFileFactory.repackageDTOArray = function (DTOArray) {\n if (!DTOArray) {\n return [];\n }\n var repackagedDTOArray = [];\n angular.forEach(DTOArray, function (DTO) {\n repackagedDTOArray.push(mainProjectFileFactory.repackageDTO(DTO));\n });\n return repackagedDTOArray;\n };\n return mainProjectFileFactory;\n}]);\n'use strict';\n\nfactories.factory('notificationTemplateFactory', ['$http', 'ENV', 'generalHelperService', function ($http, ENV, generalHelperService) {\n var urlBase = '/api/NotificationTemplates';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var notificationTemplateFactory = {};\n notificationTemplateFactory.getNotificationTemplates = function () {\n return $http.get(url);\n };\n notificationTemplateFactory.getNotificationTemplate = function (id) {\n return $http.get(url + '/' + id);\n };\n notificationTemplateFactory.updateNotificationTemplate = function (id, notificationTemplate) {\n var out = JSON.stringify(notificationTemplate);\n return $http.put(url + '/' + id, out);\n };\n notificationTemplateFactory.getConfigurableTemplates = function () {\n return $http.get(url + '/ConfigurableTemplates');\n };\n notificationTemplateFactory.extendTemplatesWithNames = function (notificationConfiguration) {\n return notificationConfiguration.reduce(function (acc, conf) {\n acc.push({\n NotificationType: conf.NotificationType,\n NotificationTemplateName: generalHelperService.getKeyByValue(NotificationTypeEnum, conf.NotificationType),\n IsSelected: conf.IsSelected\n });\n return acc;\n }, []);\n };\n return notificationTemplateFactory;\n}]);\n'use strict';\n\nfactories.factory('notificationsFactory', ['$http', 'ENV', function ($http, ENV) {\n var urlBase = '/api/notifications';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var notificationsFactory = {};\n notificationsFactory.getNotifications = function () {\n return $http.get(url);\n };\n return notificationsFactory;\n}]);\n'use strict';\n\nfactories.factory('orderDirectDeliveryFactory', ['$http', 'ENV', function ($http, ENV) {\n var orderDirectDeliveryFactory = {};\n orderDirectDeliveryFactory.createOrderDTO = function (order, orderStatus) {\n var out = {\n \"OrderId\": order.order_id,\n \"TaskStatus\": order.task_status,\n \"DeliveryReceiver1ContactId\": order.dr.receiver1.contact_id,\n \"DeliveryReceiver1ContactName\": order.dr.receiver1.contact_name,\n \"DeliveryReceiver1ContactPhone\": order.dr.receiver1.phone_nr,\n \"DeliveryReceiver1ContactEmail\": order.dr.receiver1.email,\n \"DeliveryReceiver1ContactWantEmail\": order.dr.receiver1.email_notif,\n \"DeliveryReceiver1ContactWantSms\": order.dr.receiver1.sms_notif,\n \"DeliveryReceiver2ContactId\": order.dr.receiver2.contact_id,\n \"DeliveryReceiver2ContactName\": order.dr.receiver2.contact_name,\n \"DeliveryReceiver2ContactPhone\": order.dr.receiver2.phone_nr,\n \"DeliveryReceiver2ContactEmail\": order.dr.receiver2.email,\n \"DeliveryReceiver2ContactWantEmail\": order.dr.receiver2.email_notif,\n \"DeliveryReceiver2ContactWantSms\": order.dr.receiver2.sms_notif,\n \"DeliveryReceiver3ContactId\": order.dr.receiver3.contact_id,\n \"DeliveryReceiver3ContactName\": order.dr.receiver3.contact_name,\n \"DeliveryReceiver3ContactPhone\": order.dr.receiver3.phone_nr,\n \"DeliveryReceiver3ContactEmail\": order.dr.receiver3.email,\n \"DeliveryReceiver3ContactWantEmail\": order.dr.receiver3.email_notif,\n \"DeliveryReceiver3ContactWantSms\": order.dr.receiver3.sms_notif,\n 'Supplier': order.di.supplier,\n 'HasAdditionalServiceGuiding': !!order.bc.guiding_help,\n 'HasAdditionalServiceUnloadingHelp': !!order.bc.unloading_help,\n 'IsUnannouncedGoods': !!order.bc.is_unannounced_goods,\n 'IsUnreachable': !!order.bc.is_unreachable,\n 'IsUnusedResource': !!order.bc.is_unused_resource,\n \"AdditionalServiceGuidingStatusId\": order.dto ? order.dto.AdditionalServiceGuidingStatusId : null,\n \"AdditionalServiceUnloadingHelpStatusTypeId\": order.dto ? order.dto.AdditionalServiceUnloadingHelpStatusTypeId : null,\n 'VehicleTypeId': order.di.vehicle_type_id,\n 'VehicleTypeCode': order.di.vehicle_type_name,\n 'VehicleDropLocationId': order.bc.vehicle_drop_location_id,\n 'VehicleDropLocationName': order.bc.vehicle_drop_location_name,\n 'DestinationLocationId': order.bc.destination_location_id,\n 'DestinationLocationName': order.bc.destination_location_name,\n 'StaircaseLocationId': order.bc.staircase_location_id,\n 'SlotTimeMin': order.bc.timeslots.time_i,\n 'SlotTimeMax': order.bc.timeslots.time_f,\n 'InGateId': order.bc.gate_in_id,\n 'InGateName': order.bc.gate_in_name,\n 'OutGateId': order.bc.gate_out_id,\n 'OutGateName': order.bc.gate_out_name,\n 'ExtraInGateId': order.bc.extra_gate_in_id,\n 'ExtraInGateName': order.bc.extra_gate_in_name,\n 'ExtraOutGateId': order.bc.extra_gate_out_id,\n 'ExtraOutGateName': order.bc.extra_gate_out_name,\n 'NumTransports': order.bc.n_transports,\n 'NumUnbookedTransports': order.bc.n_unbooked_transports,\n 'Comments': order.bc.comments,\n 'Files': ['nothing'],\n 'GatePassCode': '',\n 'OrderNumber': '',\n 'Content': order.di.material,\n 'Quantity': order.di.n_materials ? order.di.n_materials : '',\n 'OrderType': OrderTypeEnum.DIRECT_DELIVERY,\n 'OrderStatus': orderStatus,\n 'WorkOrderId': order.proj.work_order_id,\n 'WorkOrderName': order.proj.work_order_name,\n 'WorkOrderCompanyId': order.proj.company_id === -1 ? null : order.proj.company_id,\n // -1 used for filtering purpose and should not reach backend.\n 'WorkOrderCompanyName': order.proj.company_name,\n \"OrderCreatorContactId\": order.proj.contact_person.contact_id,\n \"OrderCreatorContactName\": order.proj.contact_person.contact_name,\n \"OrderCreatorContactPhone\": order.proj.contact_person.phone_nr,\n \"OrderCreatorContactEmail\": order.proj.contact_person.email,\n \"OrderCreatorContactWantSms\": order.proj.contact_person.sms_notif,\n \"OrderCreatorContactWantEmail\": order.proj.contact_person.email_notif\n };\n if (order.bc.hasGateIntegration) {\n if (order.bc.extra_gate_in_id) out[\"AllowedPassages\"] = 4;else out[\"AllowedPassages\"] = 2;\n } else out[\"AllowedPassages\"] = 0;\n return out;\n };\n orderDirectDeliveryFactory.loadRecurringWeek = function (recurringWeekTemplate, recurringTimes) {\n angular.forEach(recurringTimes, function (time) {\n if (time.DayOfWeek === 0) {\n recurringWeekTemplate[6].slots.push({\n recurring_time_id: time.RecurringTimeId,\n week_day: time.DayOfWeek,\n time_i: time.SlotTimeMin,\n time_f: time.SlotTimeMax\n });\n } else {\n recurringWeekTemplate[time.DayOfWeek - 1].slots.push({\n recurring_time_id: time.RecurringTimeId,\n week_day: time.DayOfWeek,\n time_i: time.SlotTimeMin,\n time_f: time.SlotTimeMax\n });\n }\n });\n return recurringWeekTemplate;\n };\n function createRecurringTimes(recurringWeek) {\n var recurringTimes = [];\n for (var i = 0; i < 7; i++) {\n angular.forEach(recurringWeek[i].slots, function (recurringSlot) {\n recurringTimes.push({\n 'RecurringTimeId': recurringSlot.recurring_time_id,\n 'DayOfWeek': recurringSlot.week_day,\n 'SlotTimeMin': recurringSlot.time_i,\n 'SlotTimeMax': recurringSlot.time_f\n });\n });\n }\n return recurringTimes;\n }\n orderDirectDeliveryFactory.createRecurringOrderDTO = function (order, orderStatus) {\n var orderDTO = orderDirectDeliveryFactory.createOrderDTO(order, orderStatus);\n orderDTO['OrderType'] = OrderTypeEnum.RECURRING_DIRECT_DELIVERY;\n orderDTO[\"RecurringStart\"] = new Date(order.bc.timeslots.recurring_start);\n orderDTO[\"RecurringEnd\"] = new Date(order.bc.timeslots.recurring_end);\n orderDTO[\"WeekTypeId\"] = order.bc.timeslots.week_frequency;\n orderDTO['RecurringTimes'] = createRecurringTimes(order.bc.timeslots.recurring_week);\n\n // Values must be set since recurring and normal direct delivery shares params but not all are needed.\n orderDTO['SlotTimeMin'] = new Date();\n orderDTO['SlotTimeMax'] = new Date();\n orderDTO['NumTransports'] = 0;\n\n // Override regular direct delivery allowedPassages with one calculated by recurring order.\n orderDTO[\"AllowedPassages\"] = order.bc.timeslots.allowed_passages;\n return orderDTO;\n };\n return orderDirectDeliveryFactory;\n}]);\n'use strict';\n\nangular.module('sp.factories').factory('orderFactory', ['$http', '$q', 'ENV', '$httpParamSerializer', 'generalHelperService', '$translate', '$filter', '$rootScope', 'errorService', 'megaFilterService', 'ngToast', function ($http, $q, ENV, $httpParamSerializer, generalHelperService, $translate, $filter, $rootScope, errorService, megaFilterService, ngToast) {\n var urlBase = '/api/orders';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var orderFactory = {};\n function dateMax(date1, date2) {\n if (!date1) {\n return date2;\n }\n if (!date2) {\n return date1;\n }\n return date1 > date2 ? date1 : date2;\n }\n function dateMin(date1, date2) {\n if (!date1) {\n return date2;\n }\n if (!date2) {\n return date1;\n }\n return date1 > date2 ? date1 : date2;\n }\n function PackageApiPaginationIfSet(pagination) {\n if (pagination.skip != null && pagination.take != null) {\n return {\n Skip: pagination.skip,\n Take: pagination.take\n };\n }\n return null;\n }\n function combineFilterAndPagination(filter, pagination, mainProjectId, searchString) {\n var combined = {\n Filter: megaFilterService.copyFilter(filter),\n Pagination: PackageApiPaginationIfSet(pagination)\n };\n combined.Filter.MainProjectId = mainProjectId;\n combined.Filter.SearchString = searchString;\n combined.Filter.deliveryTimeFrom = dateMax(filter.deliveryTimeFrom, pagination.from);\n combined.Filter.deliveryTimeTo = dateMin(filter.deliveryTimeTo, pagination.to);\n return combined;\n }\n\n //Files\n orderFactory.saveFile = function (orderId, file, fileAttachmentTypeId) {\n var formData = new FormData();\n formData.append('file', file._file);\n\n // Shall send content type 'multipart/form-data'.\n // This is needed to overwrite default value 'application/json', see https://stackoverflow.com/questions/41607656/purpose-of-content-type-undefined-in-angularjs-fileupload\n var config = {\n headers: {\n 'Content-Type': undefined\n }\n };\n var resultPromise = $http.post(url + \"/\" + orderId + \"/\" + fileAttachmentTypeId + \"/Files\", formData, config);\n resultPromise.catch(function () {\n ngToast.danger(\"Filuppladdning av '\" + file._file.name + \"' misslyckades.\");\n });\n return resultPromise;\n };\n orderFactory.createFileLink = function (orderId, fileName) {\n return url + '/' + orderId + '/Files/' + fileName;\n };\n\n // -- General orders --\n orderFactory.getOrders = function (mainProjectId, filter, pagination, searchString) {\n var data = combineFilterAndPagination(filter, pagination, mainProjectId, searchString);\n var json = JSON.stringify(data);\n return $http.post(url + '/FilteredOrders', json).then(function (response) {\n return orderFactory.RepackageDTOSlice(response.data);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n orderFactory.getOrdersFromExtendedSet = function (mainProjectId, filter, pagination, searchString) {\n var data = combineFilterAndPagination(filter, pagination, mainProjectId, searchString);\n var json = JSON.stringify(data);\n return $http.post(url + '/ExtendedSet', json).then(function (response) {\n return orderFactory.RepackageDTOSlice(response.data);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n orderFactory.getOrdersWithPackages = function (mainProjectId, filter, pagination, searchString) {\n var data = combineFilterAndPagination(filter, pagination, mainProjectId, searchString);\n var json = JSON.stringify(data);\n return $http.post(url + '/WithPackages', json).then(function (response) {\n return orderFactory.RepackageDTOSliceWithPackages(response.data);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n orderFactory.getPackageCollections = function (mainProjectId, searchString, dates, chosenTimeValueType) {\n var params = {\n mainProjectId: mainProjectId,\n searchString: searchString ? searchString : \"\",\n dateTimeFrom: dates.dateTimeFrom,\n dateTimeTo: dates.dateTimeTo,\n chosenTimeValueType: chosenTimeValueType\n };\n return $http.get(url + '/PackageCollection?' + $httpParamSerializer(params));\n };\n orderFactory.getGateBookings = function (mainProjectId) {\n // Disabled until further notice as of SPL338.\n return $q.resolve({\n data: []\n });\n //return $http.get(url + '/GateBookings?mainProjectId=' + mainProjectId);\n };\n\n orderFactory.getArchived = function (mainProjectId, filter, pagination, searchString) {\n var data = combineFilterAndPagination(filter, pagination, mainProjectId, searchString);\n var json = JSON.stringify(data);\n return $http.post(url + '/Archived', json).then(function (response) {\n return orderFactory.RepackageDTOSlice(response.data);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n orderFactory.getArchivedWithPackages = function (mainProjectId, filter, pagination, searchString) {\n var data = combineFilterAndPagination(filter, pagination, mainProjectId, searchString);\n var json = JSON.stringify(data);\n return $http.post(url + '/Archived/WithPackages', json).then(function (response) {\n return orderFactory.RepackageDTOSliceWithPackages(response.data);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n orderFactory.getUndeliveredOrders = function (mainProjectId, includeAllStatuses) {\n var params = {\n mainProjectId: mainProjectId,\n includeAllStatuses: includeAllStatuses\n };\n return $http.get(url + '/undelivered?' + $httpParamSerializer(params));\n };\n orderFactory.getOrder = function (id) {\n return $http.get(url + '/' + id);\n };\n function saveFiles(orderId, files, fileAttachmentTypeEnum) {\n var filePromises = [];\n angular.forEach(files, function (file) {\n filePromises.push(orderFactory.saveFile(orderId, file, fileAttachmentTypeEnum));\n });\n return Promise.all(filePromises);\n }\n orderFactory.createOrder = function (order, files, formGuid) {\n if (!formGuid) {\n formGuid = null;\n }\n var params = {\n formGuid: formGuid\n };\n var out = JSON.stringify(order);\n return $http.post(url + '?' + $httpParamSerializer(params), out).then(function (response) {\n if (files) {\n saveFiles(response.data, files, FileAttachmentTypeEnum.DOCUMENT);\n }\n return response;\n });\n };\n orderFactory.getGuid = function () {\n return $http.get(url + '/getguid');\n };\n orderFactory.confirmOrder = function (id, order, options) {\n var out = JSON.stringify(order);\n return $http.put(url + '/' + id + '/updateandconfirmorder', out).then(function (response) {\n if (options && options.fileAttachments) {\n saveFiles(id, options.fileAttachments, FileAttachmentTypeEnum.DOCUMENT);\n }\n });\n };\n orderFactory.updateOrder = function (id, order, options) {\n var out = JSON.stringify(order);\n return $http.put(url + '/' + id, out).then(function (response) {\n if (options && options.fileAttachments) {\n saveFiles(id, options.fileAttachments, FileAttachmentTypeEnum.DOCUMENT);\n }\n });\n };\n orderFactory.cancelOrder = function (id, order) {\n var out = JSON.stringify(order);\n return $http.put(url + '/' + id + '/cancelorder', out);\n };\n orderFactory.reactivatePackageCollectionOrder = function (id, order) {\n var out = JSON.stringify(order);\n return $http.put(url + '/' + id + '/reactivatePackageCollectionOrder', out);\n };\n orderFactory.renotifyOrderStatus = function (id) {\n return $http.put(url + '/' + id + '/RenotifyOrderStatus');\n };\n\n // -- Direct Delivery --\n orderFactory.getDirectDeliveryFormBase = function (id) {\n return $http.get(endPoint + '/api/workorders/' + id + '/directdeliveryorderformbase');\n };\n orderFactory.renotifyDirectDeliveryOrder = function (id) {\n return $http.put(url + '/' + id + '/sendgatepasscode');\n };\n orderFactory.isTimeSlotAvailable = function (from, to, vehicleDropLocationId, orderId) {\n var params = {\n from: from,\n to: to,\n vehicleDropLocationId: vehicleDropLocationId,\n orderId: orderId\n };\n return $http.get(url + '/IsTimeSlotAvailable?' + $httpParamSerializer(params));\n };\n orderFactory.isResourceAvailable = function (from, to, resourceLocationId, resourceBookingId) {\n var params = {\n from: from,\n to: to,\n resourceLocationId: resourceLocationId,\n resourceBookingId: resourceBookingId\n };\n return $http.get(url + '/IsResourceAvailable?' + $httpParamSerializer(params));\n };\n orderFactory.passCodeTryAgain = function (orderId) {\n return $http.put(url + '/' + orderId + '/PassCodeTryAgain');\n };\n\n // -- Storing --\n orderFactory.getStoringFormBase = function (workOrderId) {\n return $http.get(endPoint + '/api/workorders/' + workOrderId + '/storingorderformbase');\n };\n\n // -- Transshipment --\n orderFactory.getTransshipmentFormBase = function (workOrderId) {\n return $http.get(endPoint + '/api/workorders/' + workOrderId + '/transshipmentorderformbase');\n };\n\n /**\r\n * Retrieves a MaterialOrderFormBaseDTO. Including current article balance from WMS (Epix)\r\n */\n orderFactory.getMaterialFormBase = function (workOrderId) {\n return $http.get(endPoint + '/api/workorders/' + workOrderId + '/materialorderformbase');\n };\n\n // -- Resource Booking --\n orderFactory.getResourceBookingOrderBase = function (workOrderId) {\n return $http.get(endPoint + '/api/workorders/' + workOrderId + '/resourcebookingorderformbase');\n };\n\n //---- Changing task statuses\n //\"NextStatus/{orderType}/{taskStatusId}\"\n orderFactory.getNextStatus = function (orderType, taskStatusId) {\n return $http.get(url + \"/NextStatus/\" + orderType + \"/\" + taskStatusId);\n };\n orderFactory.setNextStatus = function (orderId) {\n return orderFactory.setNextStatusMultiple([orderId]);\n };\n orderFactory.setNextStatusMultiple = function (orderIds) {\n return $http.post(url + '/NextStatus', orderIds).finally(function () {\n $rootScope.$broadcast('orderStatusChanged');\n });\n };\n //---- Task Status end ------\n\n orderFactory.removeOrderFromDelivery = function (orderId) {\n return $http.put(url + '/' + orderId + '/RemoveFromDelivery');\n };\n orderFactory.repackageDTO = function (DTO) {\n //first, map common properties\n var order = {\n order_id: DTO.OrderId,\n order_number: DTO.OrderNumber,\n order_type: DTO.OrderType,\n order_type_name: $translate.instant(generalHelperService.getKeyByValue(OrderTypeEnum, DTO.OrderType)),\n order_status_type_id: DTO.OrderStatus,\n order_status_type_name: $translate.instant(generalHelperService.getKeyByValue(OrderStatusTypeEnum, DTO.OrderStatus)),\n task_status: DTO.TaskStatus,\n task_status_name: $translate.instant(generalHelperService.getKeyByValue(TaskStatusTypeEnum, DTO.TaskStatus)),\n project_id: null,\n project_name: '',\n work_order_id: DTO.WorkOrderId,\n work_order_name: DTO.WorkOrderName,\n work_order_company_id: DTO.WorkOrderCompanyId,\n work_order_company_name: DTO.WorkOrderCompanyName,\n erp_system_reference: DTO.ErpSystemReference,\n packages: DTO.Packages,\n supplier: DTO.Supplier,\n content: DTO.Content,\n additional_services: DTO.AdditionalServices,\n contacts: DTO.Contacts,\n is_accessible_to_user: DTO.IsAccessibleToUser,\n originalDTO: DTO\n };\n\n // Selects Project based on DropLocation.\n angular.forEach(DTO.WOProjects, function (project) {\n if (DTO.DropLocationProjectId === project.ProjectId) {\n order.project_id = project.ProjectId;\n order.project_name = project.Name;\n }\n });\n\n //then map order type specific properties\n switch (DTO.OrderType) {\n case OrderTypeEnum.DIRECT_DELIVERY:\n order.time_i = $filter('toTime')(DTO.SlotTimeMin);\n order.time_f = $filter('toTime')(DTO.SlotTimeMax);\n order.vehicle_drop_location_id = DTO.VehicleDropLocationId;\n order.vehicle_drop_location_name = DTO.VehicleDropLocationName;\n order.time_span = $filter('toTime')(DTO.SlotTimeMin) + '-' + $filter('toTime')(DTO.SlotTimeMax);\n order.date_i = $filter('toDate')(DTO.SlotTimeMin);\n order.date_f = $filter('toDate')(DTO.SlotTimeMax);\n order.gate_pass_code = DTO.PassCode;\n order.is_part = DTO.IsPart;\n order.parts_count = DTO.PartsCount;\n order.part_number = DTO.PartNumber;\n order.well_sec_error_code = DTO.WellSecErrorCode;\n order.pass_code_status_id = DTO.PassCodeRequestStatusId;\n break;\n case OrderTypeEnum.RECURRING_DIRECT_DELIVERY:\n // If SlottimeMin/Max is available then i means that it is not archived and has been split. Archived orders aren't split\n order.time_i = DTO.SlotTimeMin ? $filter('toTime')(DTO.SlotTimeMin) : $filter('toTime')(DTO.RecurringStart);\n order.time_f = DTO.SlotTimeMax ? $filter('toTime')(DTO.SlotTimeMax) : $filter('toTime')(DTO.RecurringEnd);\n order.vehicle_drop_location_id = DTO.VehicleDropLocationId;\n order.vehicle_drop_location_name = DTO.VehicleDropLocationName;\n order.time_span = $filter('toTime')(DTO.SlotTimeMin) + '-' + $filter('toTime')(DTO.SlotTimeMax);\n order.date_i = DTO.SlotTimeMin ? $filter('toDate')(DTO.SlotTimeMin) : $filter('toDate')(DTO.RecurringStart);\n order.date_f = DTO.SlotTimeMax ? $filter('toDate')(DTO.SlotTimeMax) : $filter('toDate')(DTO.RecurringEnd);\n order.gate_pass_code = DTO.PassCode;\n order.is_part = DTO.IsPart;\n order.parts_count = DTO.PartsCount;\n order.part_number = DTO.PartNumber;\n order.well_sec_error_code = DTO.WellSecErrorCode;\n break;\n case OrderTypeEnum.STORING:\n order.time_i = $filter('toTime')(DTO.OrderDate);\n order.date_i = $filter('toDate')(DTO.OrderDate);\n break;\n case OrderTypeEnum.TRANSSHIPMENT:\n order.time_i = $filter('toTime')(DTO.OrderDate);\n order.date_i = $filter('toDate')(DTO.OrderDate);\n order.arrival_at_warehouse = $filter('toDateTime')(DTO.OrderDate);\n order.arrival_time = $filter('toTime')(DTO.OrderDate);\n order.vehicle_drop_location_id = DTO.VehicleDropLocationId;\n order.vehicle_drop_location_name = DTO.VehicleDropLocationName;\n order.shipping_id = DTO.ShippingId;\n order.shipping_name = DTO.ShippingName;\n order.timing_due_date = DTO.TimingDueDate ? $filter('toDateTime')(DTO.TimingDueDate) : '';\n order.package_count = DTO.PackageCount;\n order.package_weight = DTO.PackageWeight;\n break;\n case OrderTypeEnum.MATERIAL:\n order.time_i = $filter('toTime')(DTO.OrderDate);\n order.date_i = $filter('toDate')(DTO.OrderDate);\n order.wished_delivery_time = $filter('toTime')(DTO.OrderDate);\n order.wished_delivery_date = $filter('toDate')(DTO.OrderDate);\n order.vehicle_drop_location_id = DTO.VehicleDropLocationId;\n order.vehicle_drop_location_name = DTO.VehicleDropLocationName;\n order.shipping_id = DTO.ShippingId;\n order.shipping_name = DTO.ShippingName;\n order.timing_due_date = DTO.TimingDueDate ? $filter('toDateTime')(DTO.TimingDueDate) : '';\n order.package_count = DTO.PackageCount;\n order.package_weight = DTO.PackageWeight;\n break;\n case OrderTypeEnum.RESOURCE_BOOKING:\n order.time_i = $filter('toTime')(DTO.SlotTimeMin);\n order.date_i = $filter('toDate')(DTO.SlotTimeMin);\n order.time_f = $filter('toTime')(DTO.SlotTimeMax);\n order.time_f = $filter('toTime')(DTO.SlotTimeMax);\n order.resource_location_name = DTO.ResourceLocationName;\n order.resource_location_id = DTO.ResourceLocationId;\n break;\n default:\n console.log(\"Error: Trying to repackage invalid order type: \" + DTO.OrderType);\n return;\n }\n return order;\n };\n orderFactory.repackageOrderWithPackagesDTO = function (DTO) {\n return {\n order_id: DTO.OrderId,\n order_type: DTO.OrderType,\n order_type_name: $translate.instant(generalHelperService.getKeyByValue(OrderTypeEnum, DTO.OrderType)),\n package_id: DTO.PackageId,\n package_status_type_name: $translate.instant(generalHelperService.getKeyByValue(PackageStatusTypeEnum, DTO.PackageStatusType)),\n delivery_number: DTO.OrderNumber,\n package_number: DTO.ExternalPackageId,\n // SendSuit\n tracking_number: DTO.TrackingNumber,\n // DHL etc..\n destination: DTO.Destination,\n current_location: DTO.LocationName,\n current_location_date_time: $filter('toDateTime')(DTO.Updated),\n time_i: $filter('toTime')(DTO.DeliveryDate),\n date_i: $filter('toDate')(DTO.DeliveryDate)\n };\n };\n orderFactory.repackageDTOArray = function (DTOArray) {\n var repackagedDTOArray = [];\n if (!DTOArray) {\n return [];\n }\n angular.forEach(DTOArray, function (DTO) {\n var repackagedDTO = orderFactory.repackageDTO(DTO);\n if (repackagedDTO) {\n repackagedDTOArray.push(repackagedDTO);\n }\n });\n return repackagedDTOArray;\n };\n orderFactory.RepackageDTOSlice = function (slice) {\n return {\n items: orderFactory.repackageDTOArray(slice.Items),\n totalCount: slice.TotalCount\n };\n };\n orderFactory.repackageOrderWithPackagesDTOArray = function (DTOArray) {\n var repackagedDTOArray = [];\n if (!DTOArray) {\n return [];\n }\n angular.forEach(DTOArray, function (DTO) {\n var repackagedDTO = orderFactory.repackageOrderWithPackagesDTO(DTO);\n if (repackagedDTO) {\n repackagedDTOArray.push(repackagedDTO);\n }\n });\n return repackagedDTOArray;\n };\n orderFactory.RepackageDTOSliceWithPackages = function (slice) {\n return {\n items: orderFactory.repackageOrderWithPackagesDTOArray(slice.Items),\n totalCount: slice.TotalCount\n };\n };\n orderFactory.printShippingsNote = function (orderId, printerId, printLabel, printNotice) {\n var params = {\n orderId: orderId,\n printerId: printerId,\n printLabel: !!printLabel,\n printNotice: !!printNotice\n };\n return $http.put(url + '/' + orderId + '/PrintShippingsNotes?' + $httpParamSerializer(params));\n };\n orderFactory.updateAdditionalService = function (orderId, serviceTypeId, serviceStatusTypeId) {\n var out = {\n \"AdditionalServiceTypeId\": serviceTypeId,\n \"AdditionalServiceStatusTypeId\": serviceStatusTypeId\n };\n return $http.put(url + '/' + orderId + '/updateadditionalservice', out);\n };\n orderFactory.repackageResourceBookingDTOArray = function (DTOArray) {\n if (!DTOArray) {\n return [];\n }\n var repackagedDTOArray = [];\n angular.forEach(DTOArray, function (DTO) {\n repackagedDTOArray.push({\n \"resource_booking_id\": DTO.ResourceBookingId,\n \"resource_location_id\": DTO.ResourceLocationId,\n \"resource_location_name\": DTO.ResourceLocationName,\n \"slot_time_start\": $filter('toDateTime')(DTO.SlotTimeStart),\n \"slot_time_end\": $filter('toDateTime')(DTO.SlotTimeEnd)\n });\n });\n return repackagedDTOArray;\n };\n orderFactory.createResourceBookingDTOArray = function (resourceBookings) {\n if (!resourceBookings) {\n return [];\n }\n var DTOArray = [];\n angular.forEach(resourceBookings, function (resourceBooking) {\n DTOArray.push({\n \"ResourceBookingId\": resourceBooking.resource_booking_id,\n \"ResourceLocationId\": resourceBooking.resource_location_id,\n \"SlotTimeStart\": resourceBooking.slot_time_start,\n \"SlotTimeEnd\": resourceBooking.slot_time_end\n });\n });\n return DTOArray;\n };\n return orderFactory;\n}]);\n'use strict';\n\nfactories.factory('orderGateBookingFactory', ['$http', 'ENV', function ($http, ENV) {\n var orderGateBookingFactory = {};\n orderGateBookingFactory.createOrderDTO = function (order, orderStatus) {\n return {\n \"OrderId\": order.order_id,\n \"TaskStatus\": order.task_status,\n \"DeliveryReceiver1ContactId\": order.dr.receiver1.contact_id,\n \"DeliveryReceiver1ContactName\": order.dr.receiver1.contact_name,\n \"DeliveryReceiver1ContactPhone\": order.dr.receiver1.phone_nr,\n \"DeliveryReceiver1ContactEmail\": order.dr.receiver1.email,\n \"DeliveryReceiver1ContactWantEmail\": order.dr.receiver1.email_notif,\n \"DeliveryReceiver1ContactWantSms\": order.dr.receiver1.sms_notif,\n \"DeliveryReceiver2ContactId\": order.dr.receiver2.contact_id,\n \"DeliveryReceiver2ContactName\": order.dr.receiver2.contact_name,\n \"DeliveryReceiver2ContactPhone\": order.dr.receiver2.phone_nr,\n \"DeliveryReceiver2ContactEmail\": order.dr.receiver2.email,\n \"DeliveryReceiver2ContactWantEmail\": order.dr.receiver2.email_notif,\n \"DeliveryReceiver2ContactWantSms\": order.dr.receiver2.sms_notif,\n \"DeliveryReceiver3ContactId\": order.dr.receiver3.contact_id,\n \"DeliveryReceiver3ContactName\": order.dr.receiver3.contact_name,\n \"DeliveryReceiver3ContactPhone\": order.dr.receiver3.phone_nr,\n \"DeliveryReceiver3ContactEmail\": order.dr.receiver3.email,\n \"DeliveryReceiver3ContactWantEmail\": order.dr.receiver3.email_notif,\n \"DeliveryReceiver3ContactWantSms\": order.dr.receiver3.sms_notif,\n 'Supplier': order.di.supplier,\n 'SlotTimeMin': order.bc.time_i,\n 'SlotTimeMax': order.bc.time_f,\n \"AllowedPassages\": order.bc.allowed_passages,\n 'InGateId': order.bc.gate_in_id,\n 'InGateName': order.bc.gate_in_name,\n 'OutGateId': order.bc.gate_out_id,\n 'OutGateName': order.bc.gate_out_name,\n 'Comments': order.bc.comments,\n 'GatePassCode': '',\n 'OrderNumber': '',\n 'OrderType': OrderTypeEnum.GATE_BOOKING,\n 'OrderStatus': orderStatus,\n 'WorkOrderId': order.proj.work_order_id,\n 'WorkOrderName': order.proj.work_order_name,\n 'WorkOrderCompanyId': order.proj.company_id,\n 'WorkOrderCompanyName': order.proj.company_name,\n \"Quantity\": ''\n };\n };\n return orderGateBookingFactory;\n}]);\n\"use strict\";\n\nfactories.factory(\"orderMaterialFactory\", function () {\n var orderMaterialFactory = {};\n function articlesBatchEquals(article1, article2) {\n return article1.article_id === article2.article_id && article1.batch === article2.batch && article1.storage_location === article2.storage_location;\n }\n function insertSorted(array, element, compareFunction) {\n var insertIndex = _.findIndex(array, function (a) {\n return compareArticles(a, element) >= 0;\n });\n if (insertIndex === -1) insertIndex = array.length;\n return array.splice(insertIndex, 0, element);\n }\n\n /**\r\n * Returns an array of ArticleOrderLineDTO instances, intended to be part of an OrderDTO to send to BE.\r\n *\r\n * Is visible in the factory for test.\r\n * @param {} articles\r\n * @param {} storageLocation \r\n * @returns {} \r\n */\n orderMaterialFactory.packageArticles = function (articles, storageLocation) {\n var articleOrderLineDtoArray = [];\n for (var i = 0; i < articles.length; i++) {\n var articleToAdd = articles[i];\n\n // Handle that article_quantity is mangled by UI-binding if larger than availability.\n // This may happen if an order is updated or confirmed after the WMS stock har diminished\n var articleQuantity = articleToAdd.article_quantity;\n if (articleQuantity === undefined) {\n articleQuantity = articleToAdd.original_article_quantity;\n }\n if (articleQuantity > 0 && articleToAdd.storage_location === storageLocation) {\n var orderLineDto = _.find(articleOrderLineDtoArray, function (dto) {\n return dto.ArticleId === articleToAdd.article_id && dto.ProductionBatchId === articleToAdd.batch;\n });\n if (orderLineDto) {\n orderLineDto.OrderedQuantity += articleQuantity;\n } else {\n articleOrderLineDtoArray.push({\n \"ArticleId\": articleToAdd.article_id,\n \"ProductionBatchId\": articleToAdd.batch,\n \"StorageLocation\": articleToAdd.storage_location,\n \"OrderedQuantity\": articleQuantity,\n \"Name\": articleToAdd.article_name,\n \"Unit\": articleToAdd.unit,\n \"Weight\": articleToAdd.weight\n });\n }\n }\n }\n return articleOrderLineDtoArray;\n };\n function repackageArticleOrderLineDTO(articleOrderLineDTO) {\n return {\n article_id: articleOrderLineDTO.ArticleId,\n batch: articleOrderLineDTO.ProductionBatchId ? articleOrderLineDTO.ProductionBatchId : \"\",\n storage_location: articleOrderLineDTO.StorageLocation ? articleOrderLineDTO.StorageLocation : \"\",\n article_quantity: articleOrderLineDTO.OrderedQuantity,\n article_name: articleOrderLineDTO.Name ? articleOrderLineDTO.Name : \"\",\n unit: articleOrderLineDTO.Unit ? articleOrderLineDTO.Unit : \"\",\n weight: articleOrderLineDTO.Weight\n };\n }\n ;\n\n /**\r\n * Returns the ordered articles, with each article as a single line, regardless of the stock situation in WMS.\r\n * @param {} articleOrderLineDTOArray - Articles ordered by the user.\r\n * @returns {} ArticleOrderLine array, to be used in the UI\r\n */\n orderMaterialFactory.repackageArticleOrderLineDTOArray = function (articleOrderLineDTOArray) {\n var articles = [];\n angular.forEach(articleOrderLineDTOArray, function (articleOrderLineDTO) {\n var article = repackageArticleOrderLineDTO(articleOrderLineDTO);\n articles.push(article);\n });\n articles.sort(compareArticles);\n return articles;\n };\n function repackageArticleDTOAsArticleOrderLine(articleDTO) {\n var article = {\n article_id: articleDTO.Id,\n batch: articleDTO.ProductionBatchId ? articleDTO.ProductionBatchId : \"\",\n storage_location: articleDTO.StorageLocation ? articleDTO.StorageLocation : \"\",\n article_name: articleDTO.Name ? articleDTO.Name : \"\",\n unit: articleDTO.Unit ? articleDTO.Unit : \"\",\n weight: articleDTO.Weight,\n availability: articleDTO.Availability,\n article_quantity: 0,\n original_article_quantity: 0\n };\n return article;\n }\n ;\n function compareArticles(article1, article2) {\n var compare;\n compare = article1.storage_location.localeCompare(article2.storage_location);\n if (compare !== 0) return compare;\n compare = article1.article_id.localeCompare(article2.article_id);\n if (compare !== 0) return compare;\n compare = article1.article_name.localeCompare(article2.article_name);\n if (compare !== 0) return compare;\n compare = article1.batch.localeCompare(article2.batch);\n if (compare !== 0) return compare;\n if (article1.availability !== undefined && article2.availability !== undefined) {\n return article1.availability - article2.availability;\n }\n return 0;\n }\n\n /**\r\n * Return a list of the existing WMS articles in stock including what the user has ordered.\r\n * Intended to be called to populate the order form with data from the BE.\r\n * \r\n * Distributes the ordered articles over the available articles in stock when there is more than one\r\n * WMS article (pallet) in stock for a specific article.\r\n * @param {ArticleDTO} articleDTOArray - Articles in stock from WMS-system (Epix).\r\n * @param {} orderedArticles - Articles ordered by the user.\r\n * @returns {} ArticleOrderLine array, to be used in the UI\r\n */\n orderMaterialFactory.repackageArticleDTOsAsArticleOrderLineArray = function (articleDTOArray, orderedArticles) {\n var articles = [];\n angular.forEach(articleDTOArray, function (articleDTO) {\n articles.push(repackageArticleDTOAsArticleOrderLine(articleDTO));\n });\n\n // Sort articles on availability, so the ordered quantity is distributed on the pallets with least availability first\n articles.sort(compareArticles);\n\n // For each ordered article, go through the articles in stock and distribute the quantity.\n angular.forEach(orderedArticles, function (orderedArticle) {\n var orderedQuantity = orderedArticle.article_quantity;\n if (orderedQuantity <= 0) return;\n var lastArticle = null;\n var articleIx = _.findIndex(articles, function (article) {\n return articlesBatchEquals(article, orderedArticle);\n });\n while (articleIx !== -1) {\n lastArticle = articles[articleIx];\n var quantityToTakeFromThisArticle = Math.min(orderedQuantity, lastArticle.availability);\n lastArticle.article_quantity = quantityToTakeFromThisArticle;\n lastArticle.original_article_quantity = lastArticle.article_quantity;\n orderedQuantity -= quantityToTakeFromThisArticle;\n if (orderedQuantity === 0) break;\n articleIx = _.findIndex(articles, function (article) {\n return articlesBatchEquals(article, orderedArticle);\n }, articleIx + 1);\n }\n\n // If ordered article not in stock, show and order it anyway\n if (lastArticle === null) {\n var outOfStockArticle = _.clone(orderedArticle);\n outOfStockArticle.availability = 0;\n outOfStockArticle.original_article_quantity = outOfStockArticle.article_quantity;\n insertSorted(articles, outOfStockArticle, compareArticles);\n }\n\n // If there was not enough articles in stock to fulfill the ordered quantity, over-order\n // This can happen if the stock has been diminished between notification and confirmation of the material task order.\n if (orderedQuantity > 0 && lastArticle) {\n lastArticle.article_quantity += orderedQuantity;\n lastArticle.original_article_quantity = lastArticle.article_quantity;\n }\n });\n return articles;\n };\n orderMaterialFactory.createOrderDTO = function (order, orderStatus) {\n return {\n \"OrderId\": order.order_id,\n \"TaskStatus\": order.task_status,\n \"DeliveryReceiver1ContactId\": order.dr.receiver1.contact_id,\n \"DeliveryReceiver1ContactName\": order.dr.receiver1.contact_name,\n \"DeliveryReceiver1ContactPhone\": order.dr.receiver1.phone_nr,\n \"DeliveryReceiver1ContactEmail\": order.dr.receiver1.email,\n \"DeliveryReceiver1ContactWantEmail\": order.dr.receiver1.email_notif,\n \"DeliveryReceiver1ContactWantSms\": order.dr.receiver1.sms_notif,\n \"DeliveryReceiver2ContactId\": order.dr.receiver2.contact_id,\n \"DeliveryReceiver2ContactName\": order.dr.receiver2.contact_name,\n \"DeliveryReceiver2ContactPhone\": order.dr.receiver2.phone_nr,\n \"DeliveryReceiver2ContactEmail\": order.dr.receiver2.email,\n \"DeliveryReceiver2ContactWantEmail\": order.dr.receiver2.email_notif,\n \"DeliveryReceiver2ContactWantSms\": order.dr.receiver2.sms_notif,\n \"DeliveryReceiver3ContactId\": order.dr.receiver3.contact_id,\n \"DeliveryReceiver3ContactName\": order.dr.receiver3.contact_name,\n \"DeliveryReceiver3ContactPhone\": order.dr.receiver3.phone_nr,\n \"DeliveryReceiver3ContactEmail\": order.dr.receiver3.email,\n \"DeliveryReceiver3ContactWantEmail\": order.dr.receiver3.email_notif,\n \"DeliveryReceiver3ContactWantSms\": order.dr.receiver3.sms_notif,\n // --\n \"DestinationAddress\": order.bc.address,\n \"DestinationZipCode\": order.bc.zip_code,\n \"DestinationCity\": order.bc.city,\n \"VehicleDropLocationId\": order.bc.vehicle_drop_location_id,\n \"VehicleDropLocationName\": order.bc.vehicle_drop_location_name,\n \"DestinationLocationId\": order.bc.destination_location_id,\n \"DestinationLocationName\": order.bc.destination_location_name,\n \"StaircaseLocationId\": order.bc.staircase_location_id,\n \"WishedDeliveryDate\": order.bc.arrival_time,\n \"NumTransports\": order.bc.n_transports,\n \"Comments\": order.bc.comments,\n \"IsUnannouncedGoods\": !!order.bc.is_unannounced_goods,\n \"IsUnreachable\": !!order.bc.is_unreachable,\n \"IsUnusedResource\": !!order.bc.is_unused_resource,\n // --\n \"OrderType\": OrderTypeEnum.MATERIAL,\n \"OrderStatus\": orderStatus,\n // --\n \"WorkOrderId\": order.proj.work_order_id,\n \"WorkOrderName\": order.proj.work_order_name,\n // TODO: Possible to remove?\n \"WmsSystemReference\": order.proj.epix_owner_number,\n \"WorkOrderCompanyId\": order.proj.company_id,\n \"WorkOrderCompanyName\": order.proj.company_name,\n // TODO: Possible to remove?\n \"OrderCreatorContactId\": order.proj.contact_person.contact_id,\n \"OrderCreatorContactName\": order.proj.contact_person.contact_name,\n \"OrderCreatorContactPhone\": order.proj.contact_person.phone_nr,\n \"OrderCreatorContactEmail\": order.proj.contact_person.email,\n \"OrderCreatorContactWantSms\": order.proj.contact_person.sms_notif,\n \"OrderCreatorContactWantEmail\": order.proj.contact_person.email_notif,\n // --\n \"ArticleOrderLines\": this.packageArticles(order.wb.articles, order.wb.storage_location),\n //Admin sections\n \"SpecifiedPackageCount\": order.si.package_count,\n \"SpecifiedPackageWeight\": order.si.package_weight,\n \"SpecifiedPalletCount\": order.si.pallet_count,\n \"SpecifiedPalletWeight\": order.si.pallet_weight,\n \"SpecifiedOtherCount\": order.si.other_count,\n \"SpecifiedOtherWeight\": order.si.other_weight,\n \"HasAdditionalServiceExpressDelivery\": !!order.si.has_express,\n \"HasAdditionalServiceTiming\": !!order.si.has_timing,\n \"AdditionalServiceTimingDueDate\": order.si.timing,\n \"ShippingId\": order.si.shipping_id,\n // --\n \"IsReturn\": !!order.ar.is_return,\n \"AdditionalServiceTimingStatusTypeId\": order.dto ? order.dto.AdditionalServiceTimingStatusTypeId : null,\n \"AdditionalServiceExpressDeliveryStatusTypeId\": order.dto ? order.dto.AdditionalServiceExpressDeliveryStatusTypeId : null\n };\n };\n return orderMaterialFactory;\n});\n'use strict';\n\nfactories.factory('orderPackageCollectionFactory', ['$filter', 'packageFactory', 'workOrderFactory', function ($filter, packageFactory, workOrderFactory) {\n var orderPackageCollectionFactory = {};\n orderPackageCollectionFactory.createOrderDTO = function (order) {\n return {\n \"OrderId\": order.order_id,\n \"TaskStatus\": order.task_status,\n \"WorkOrderId\": order.work_order_id,\n \"CustomName\": order.package_collection_name,\n \"ValidFrom\": order.valid_from + ' 00:00:00',\n \"ValidTo\": order.valid_to + ' 23:59:59',\n \"OrderType\": OrderTypeEnum.PACKAGE_COLLECTION,\n \"Comments\": order.comments,\n 'VehicleDropLocationId': order.vehicle_drop_location_id,\n 'VehicleDropLocationName': order.vehicle_drop_location_name,\n 'DestinationLocationId': order.location_id,\n 'DestinationLocationName': order.location_name,\n \"DestinationAddress\": order.address,\n \"DestinationZipCode\": order.zip_code,\n \"DestinationCity\": order.city,\n \"Quantity\": 0\n };\n };\n function repackageDTO(packageCollectionOrderDTO) {\n return {\n order_id: packageCollectionOrderDTO.OrderId,\n order_number: packageCollectionOrderDTO.OrderNumber,\n task_status: packageCollectionOrderDTO.TaskStatus,\n task_status_name: $filter('translate')(packageCollectionOrderDTO.TaskStatusTypeAlias),\n work_order_id: packageCollectionOrderDTO.WorkOrderId,\n work_order_name: packageCollectionOrderDTO.WorkOrderName,\n work_order_display_name: workOrderFactory.workOrderDisplayName(packageCollectionOrderDTO.WorkOrderName, packageCollectionOrderDTO.ErpSystemReference),\n company_id: packageCollectionOrderDTO.WorkOrderCompanyId,\n company_name: packageCollectionOrderDTO.WorkOrderCompanyName,\n package_collection_id: packageCollectionOrderDTO.CustomId,\n package_collection_name: packageCollectionOrderDTO.CustomName,\n packages: packageFactory.repackageDTOArray(packageCollectionOrderDTO.Packages),\n valid_from: $filter('toDate')(packageCollectionOrderDTO.ValidFrom),\n valid_to: $filter('toDate')(packageCollectionOrderDTO.ValidTo),\n comments: packageCollectionOrderDTO.Comments,\n vehicle_drop_location_id: packageCollectionOrderDTO.VehicleDropLocationId,\n vehicle_drop_location_name: packageCollectionOrderDTO.VehicleDropLocationName,\n location_id: packageCollectionOrderDTO.DestinationLocationId,\n location_name: packageCollectionOrderDTO.DestinationLocationName,\n address: packageCollectionOrderDTO.DestinationAddress,\n zip_code: packageCollectionOrderDTO.DestinationZipCode,\n city: packageCollectionOrderDTO.DestinationCity\n };\n }\n ;\n orderPackageCollectionFactory.repackageDTOArray = function (DTOArray) {\n if (!DTOArray) {\n return [];\n }\n var packageCollectionOrders = [];\n angular.forEach(DTOArray, function (packageCollectionOrderDTO) {\n packageCollectionOrders.push(repackageDTO(packageCollectionOrderDTO));\n });\n return packageCollectionOrders;\n };\n return orderPackageCollectionFactory;\n}]);\n'use strict';\n\nfactories.factory('orderResourceBookingFactory', ['orderFactory', function (orderFactory) {\n var orderResourceBookingFactory = {};\n orderResourceBookingFactory.createOrderDTO = function (order, orderStatus) {\n return {\n \"OrderId\": order.order_id,\n \"TaskStatus\": order.task_status,\n \"OrderType\": OrderTypeEnum.RESOURCE_BOOKING,\n \"OrderStatus\": orderStatus,\n \"WorkOrderId\": order.proj.work_order_id,\n \"WorkOrderName\": order.proj.work_order_name,\n \"WorkOrderCompanyId\": order.proj.company_id,\n \"WorkOrderCompanyName\": order.proj.company_name,\n \"OrderCreatorContactId\": order.proj.contact_person.contact_id,\n \"OrderCreatorContactName\": order.proj.contact_person.contact_name,\n \"OrderCreatorContactPhone\": order.proj.contact_person.phone_nr,\n \"OrderCreatorContactEmail\": order.proj.contact_person.email,\n \"OrderCreatorContactWantSms\": order.proj.contact_person.sms_notif,\n \"OrderCreatorContactWantEmail\": order.proj.contact_person.email_notif,\n \"DeliveryReceiver1ContactId\": order.dr.receiver1.contact_id,\n \"DeliveryReceiver1ContactName\": order.dr.receiver1.contact_name,\n \"DeliveryReceiver1ContactPhone\": order.dr.receiver1.phone_nr,\n \"DeliveryReceiver1ContactEmail\": order.dr.receiver1.email,\n \"DeliveryReceiver1ContactWantEmail\": order.dr.receiver1.email_notif,\n \"DeliveryReceiver1ContactWantSms\": order.dr.receiver1.sms_notif,\n \"DeliveryReceiver2ContactId\": order.dr.receiver2.contact_id,\n \"DeliveryReceiver2ContactName\": order.dr.receiver2.contact_name,\n \"DeliveryReceiver2ContactPhone\": order.dr.receiver2.phone_nr,\n \"DeliveryReceiver2ContactEmail\": order.dr.receiver2.email,\n \"DeliveryReceiver2ContactWantEmail\": order.dr.receiver2.email_notif,\n \"DeliveryReceiver2ContactWantSms\": order.dr.receiver2.sms_notif,\n \"DeliveryReceiver3ContactId\": order.dr.receiver3.contact_id,\n \"DeliveryReceiver3ContactName\": order.dr.receiver3.contact_name,\n \"DeliveryReceiver3ContactPhone\": order.dr.receiver3.phone_nr,\n \"DeliveryReceiver3ContactEmail\": order.dr.receiver3.email,\n \"DeliveryReceiver3ContactWantEmail\": order.dr.receiver3.email_notif,\n \"DeliveryReceiver3ContactWantSms\": order.dr.receiver3.sms_notif,\n \"VehicleDropLocationId\": order.bc.vehicle_drop_location_id,\n \"VehicleDropLocationName\": order.bc.vehicle_drop_location_name,\n \"DestinationLocationId\": order.bc.destination_location_id,\n \"DestinationLocationName\": order.bc.destination_location_name,\n \"StaircaseLocationId\": order.bc.staircase_location_id,\n \"ResourceBookings\": orderFactory.createResourceBookingDTOArray(order.bc.resource_bookings),\n \"Comments\": order.bc.comments,\n \"ParentOrderId\": order.br.parent_order_id,\n \"NumTransports\": 0,\n \"Content\": \"\",\n \"Quantity\": \"\"\n };\n };\n return orderResourceBookingFactory;\n}]);\n'use strict';\n\nfactories.factory('orderStoringFactory', function () {\n var orderStoringFactory = {};\n orderStoringFactory.createOrderDTO = function (order, orderStatus) {\n return {\n \"OrderId\": order.order_id,\n \"TaskStatus\": order.task_status,\n \"Supplier\": order.di.supplier,\n \"Content\": order.di.material,\n \"Quantity\": order.di.n_materials,\n \"ExternalOrderReference\": order.bc.ext_order_reference,\n \"Comments\": order.bc.comments,\n \"NumTransports\": order.bc.n_transports,\n \"Arrival\": order.bc.arrival_time,\n \"HasAdditionalServiceArrivalControl\": true,\n // Has always additional service Arrival Control\n \"OrderType\": OrderTypeEnum.STORING,\n \"OrderStatus\": orderStatus,\n \"WorkOrderId\": order.proj.work_order_id,\n \"WorkOrderName\": order.proj.work_order_name,\n \"WorkOrderCompanyId\": order.proj.company_id,\n \"WorkOrderCompanyName\": order.proj.company_name,\n \"OrderCreatorContactId\": order.proj.contact_person.contact_id,\n \"OrderCreatorContactName\": order.proj.contact_person.contact_name,\n \"OrderCreatorContactPhone\": order.proj.contact_person.phone_nr,\n \"OrderCreatorContactEmail\": order.proj.contact_person.email,\n \"OrderCreatorContactWantSms\": order.proj.contact_person.sms_notif,\n \"OrderCreatorContactWantEmail\": order.proj.contact_person.email_notif,\n //Admin section\n \"IsUnannouncedGoods\": !!order.bc.is_unannounced_goods,\n \"IsUnreachable\": !!order.bc.is_unreachable,\n \"IsUnusedResource\": !!order.bc.is_unused_resource,\n \"HasInadequateLabeling\": !!order.ar.has_inadequate_labeling,\n \"OtherReference\": order.ar.other_reference\n };\n };\n return orderStoringFactory;\n});\n'use strict';\n\nfactories.factory('orderTransshipmentFactory', function () {\n var orderTransshipmentFactory = {};\n orderTransshipmentFactory.createOrderDTO = function (order, orderStatus) {\n return {\n \"OrderId\": order.order_id,\n \"TaskStatus\": order.task_status,\n \"DeliveryReceiver1ContactId\": order.dr.receiver1.contact_id,\n \"DeliveryReceiver1ContactName\": order.dr.receiver1.contact_name,\n \"DeliveryReceiver1ContactPhone\": order.dr.receiver1.phone_nr,\n \"DeliveryReceiver1ContactEmail\": order.dr.receiver1.email,\n \"DeliveryReceiver1ContactWantEmail\": order.dr.receiver1.email_notif,\n \"DeliveryReceiver1ContactWantSms\": order.dr.receiver1.sms_notif,\n \"DeliveryReceiver2ContactId\": order.dr.receiver2.contact_id,\n \"DeliveryReceiver2ContactName\": order.dr.receiver2.contact_name,\n \"DeliveryReceiver2ContactPhone\": order.dr.receiver2.phone_nr,\n \"DeliveryReceiver2ContactEmail\": order.dr.receiver2.email,\n \"DeliveryReceiver2ContactWantEmail\": order.dr.receiver2.email_notif,\n \"DeliveryReceiver2ContactWantSms\": order.dr.receiver2.sms_notif,\n \"DeliveryReceiver3ContactId\": order.dr.receiver3.contact_id,\n \"DeliveryReceiver3ContactName\": order.dr.receiver3.contact_name,\n \"DeliveryReceiver3ContactPhone\": order.dr.receiver3.phone_nr,\n \"DeliveryReceiver3ContactEmail\": order.dr.receiver3.email,\n \"DeliveryReceiver3ContactWantEmail\": order.dr.receiver3.email_notif,\n \"DeliveryReceiver3ContactWantSms\": order.dr.receiver3.sms_notif,\n \"Supplier\": order.di.supplier,\n // --\n \"AdditionalServiceExpressDeliveryStatusTypeId\": order.dto ? order.dto.AdditionalServiceExpressDeliveryStatusTypeId : null,\n \"AdditionalServiceTimingStatusTypeId\": order.dto ? order.dto.AdditionalServiceTimingStatusTypeId : null,\n \"VehicleDropLocationId\": order.bc.vehicle_drop_location_id,\n \"VehicleDropLocationName\": order.bc.vehicle_drop_location_name,\n \"DestinationLocationId\": order.bc.destination_location_id,\n \"DestinationLocationName\": order.bc.destination_location_name,\n \"StaircaseLocationId\": order.bc.staircase_location_id,\n \"ArrivalAtWarehouse\": order.bc.arrival_time,\n \"NumTransports\": order.bc.n_transports,\n \"Comments\": order.bc.comments,\n // --\n \"Content\": order.di.material,\n \"Quantity\": order.di.n_materials,\n // --\n \"OrderType\": OrderTypeEnum.TRANSSHIPMENT,\n \"OrderStatus\": orderStatus,\n \"WorkOrderId\": order.proj.work_order_id,\n \"WorkOrderName\": order.proj.work_order_name,\n \"WorkOrderCompanyId\": order.proj.company_id,\n \"WorkOrderCompanyName\": order.proj.company_name,\n \"OrderCreatorContactId\": order.proj.contact_person.contact_id,\n \"OrderCreatorContactName\": order.proj.contact_person.contact_name,\n \"OrderCreatorContactPhone\": order.proj.contact_person.phone_nr,\n \"OrderCreatorContactEmail\": order.proj.contact_person.email,\n \"OrderCreatorContactWantSms\": order.proj.contact_person.sms_notif,\n \"OrderCreatorContactWantEmail\": order.proj.contact_person.email_notif,\n //Admin sections\n \"IsUnannouncedGoods\": !!order.bc.is_unannounced_goods,\n \"IsUnreachable\": !!order.bc.is_unreachable,\n \"IsUnusedResource\": !!order.bc.is_unused_resource,\n \"HasInadequateLabeling\": !!order.ar.has_inadequate_labeling,\n \"IsReturn\": !!order.ar.is_return,\n \"OtherReference\": order.ar.other_reference,\n // --\n \"SpecifiedPackageCount\": order.si.package_count,\n \"SpecifiedPackageWeight\": order.si.package_weight,\n \"SpecifiedPalletCount\": order.si.pallet_count,\n \"SpecifiedPalletWeight\": order.si.pallet_weight,\n \"SpecifiedOtherCount\": order.si.other_count,\n \"SpecifiedOtherWeight\": order.si.other_weight,\n \"HasAdditionalServiceTiming\": !!order.si.has_timing,\n \"AdditionalServiceTimingDueDate\": order.si.timing,\n \"HasAdditionalServiceExpressDelivery\": !!order.si.has_express,\n \"HasAdditionalServiceArrivalControl\": true,\n // Has always additional service Arrival Control\n \"ShippingId\": order.si.shipping_id\n };\n };\n return orderTransshipmentFactory;\n});\n'use strict';\n\nfactories.factory('packageFactory', ['$http', 'ENV', '$filter', '$translate', 'generalHelperService', '$httpParamSerializer', function ($http, ENV, $filter, $translate, generalHelperService, $httpParamSerializer) {\n var urlBase = '/api/packages';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var packageFactory = {};\n packageFactory.getPackages = function () {\n return $http.get(url);\n };\n packageFactory.getPackagesWithFilter = function (dates, chosenTimeValueType, searchString, packageCollectionOrderId) {\n var params = {\n dateTimeFrom: dates.dateTimeFrom,\n dateTimeTo: dates.dateTimeTo,\n chosenTimeValueType: chosenTimeValueType,\n searchString: searchString ? searchString : \"\",\n packageCollectionOrderId: packageCollectionOrderId\n };\n return $http.get(url + '/PackagesWithFilter?' + $httpParamSerializer(params));\n };\n packageFactory.getPackage = function (id) {\n return $http.get(url + '/' + id);\n };\n packageFactory.createPackage = function (pack) {\n var out = JSON.stringify(pack);\n return $http.post(url, out);\n };\n packageFactory.updatePackage = function (id, pack) {\n var out = JSON.stringify(pack);\n return $http.put(url + '/' + id, out);\n };\n packageFactory.deliverPackage = function (id, pack) {\n var out = JSON.stringify(pack);\n return $http.put(url + '/' + id + '/Deliver', out);\n };\n packageFactory.buildImageLinks = function (packageID, image) {\n var links = {\n link: url + '/' + packageID + '/Files/' + image,\n dl_link: url + '/' + packageID + '/Files/' + image + '?download=true'\n };\n return links;\n };\n packageFactory.getPackageHistory = function (id) {\n return $http.get(url + '/' + id + '/history');\n };\n packageFactory.repackageDTO = function (DTO) {\n var out = {\n package_id: DTO.PackageId,\n delivery_number: DTO.OrderNumber,\n package_number: DTO.ExternalPackageId,\n tracking_number: DTO.TrackingNumber,\n delivery_time: '---',\n order_type: $translate.instant(DTO.OrderTypeAlias),\n package_status_type: DTO.PackageStatusType,\n package_status_name: $translate.instant(generalHelperService.getKeyByValue(PackageStatusTypeEnum, DTO.PackageStatusType)),\n package_type: $translate.instant(generalHelperService.getKeyByValue(PackageTypeEnum, DTO.PackageType)),\n receiver: DTO.Receiver,\n package_address: DTO.Address,\n package_location_id: DTO.LocationId,\n package_location_name: DTO.LocationName,\n package_end_address: DTO.EndAddress,\n package_end_city: DTO.EndCity,\n package_end_location_id: DTO.EndLocationId,\n package_end_location_name: DTO.EndLocationName,\n package_end_postal_code: DTO.EndPostalCode,\n package_created: $filter('toDateTime')(DTO.PackageCreated),\n package_updated: $filter('toDateTime')(DTO.PackageUpdated),\n package_delivered: $filter('toDateTime')(DTO.PackageDelivered),\n is_active: DTO.IsActive,\n comments: DTO.Comment,\n carrier: DTO.Carrier,\n deviation: DTO.DeviationCodeName,\n deviation_code: DTO.DeviationCodeId,\n weight: DTO.Weight,\n image1: DTO.Image1,\n image1_link: packageFactory.buildImageLinks(DTO.PackageId, DTO.Image1).link,\n image2: DTO.Image2,\n image2_link: packageFactory.buildImageLinks(DTO.PackageId, DTO.Image2).link,\n image3: DTO.Image3,\n image3_link: packageFactory.buildImageLinks(DTO.PackageId, DTO.Image3).link,\n image4: DTO.Image4,\n image4_link: packageFactory.buildImageLinks(DTO.PackageId, DTO.Image4).link,\n has_images: DTO.Image1 || DTO.Image2 || DTO.Image3 || DTO.Image4,\n signature_image: DTO.SignatureImage,\n signature_image_link: packageFactory.buildImageLinks(DTO.PackageId, DTO.SignatureImage).link,\n signature_clarification: DTO.SignatureClarification,\n currentPlace: DTO.LocationName ? DTO.LocationName : DTO.Address,\n endPlace: DTO.EndLocationName ? DTO.EndLocationName : \"\"\n };\n out.packageTime = function (chosenTimeType) {\n switch (chosenTimeType) {\n case PackageTimeValueTypeEnum.DELIVERED:\n return this.package_delivered;\n case PackageTimeValueTypeEnum.UPDATED:\n return this.package_updated;\n default:\n return this.package_created;\n }\n };\n if (!out.endPlace && DTO.EndAddress) {\n out.endPlace = DTO.EndAddress;\n out.endPlace += DTO.EndPostalCode ? \" \" + DTO.EndPostalCode : \"\";\n out.endPlace += DTO.EndCity ? \" \" + DTO.EndCity : \"\";\n }\n return out;\n };\n packageFactory.repackageDTOArray = function (DTOArray) {\n var repackagedDTOArray = [];\n if (!DTOArray) {\n return [];\n }\n angular.forEach(DTOArray, function (DTO) {\n repackagedDTOArray.push(packageFactory.repackageDTO(DTO));\n });\n return repackagedDTOArray;\n };\n return packageFactory;\n}]);\n'use strict';\n\nfactories.factory('printerFactory', ['$http', 'ENV', '$httpParamSerializer', function ($http, ENV, $httpParamSerializer) {\n var urlBase = '/api/printers';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var printerFactory = {};\n printerFactory.getAllPrinters = function () {\n return $http.get(url);\n };\n printerFactory.getPrintersByMainProjectId = function (mainProjectId) {\n return $http.get(url + '?' + $httpParamSerializer({\n mainProjectId: mainProjectId\n }));\n };\n printerFactory.getPrinter = function (id) {\n return $http.get(url + '/' + id);\n };\n printerFactory.createPrinter = function (type) {\n var out = JSON.stringify(type);\n return $http.post(url, out);\n };\n printerFactory.updatePrinter = function (id, type) {\n var out = JSON.stringify(type);\n return $http.put(url + '/' + id, out);\n };\n printerFactory.activatePrinter = function (id) {\n return $http.put(url + '/' + id + '/activate');\n };\n printerFactory.deactivatePrinter = function (id) {\n return $http.put(url + '/' + id + '/deactivate');\n };\n printerFactory.deletePrinter = function (id) {\n return $http.delete(url + '/' + id);\n };\n printerFactory.repackageDTO = function (DTO) {\n return {\n printer_id: DTO.PrinterId,\n main_project_id: DTO.MainProjectId,\n main_project_name: DTO.MainProjectName,\n printer_name: DTO.Name,\n printer_location: DTO.Location,\n printer_partition: DTO.Partition,\n company: DTO.Company,\n street_address: DTO.StreetAddress,\n zip_code: DTO.ZipCode,\n city: DTO.City,\n phone: DTO.Phone,\n email: DTO.Email,\n is_active: DTO.IsActive\n };\n };\n printerFactory.repackageDTOArray = function (DTOArray) {\n var repackagedDTOArray = [];\n if (!DTOArray) {\n return [];\n }\n angular.forEach(DTOArray, function (DTO) {\n repackagedDTOArray.push(printerFactory.repackageDTO(DTO));\n });\n return repackagedDTOArray;\n };\n return printerFactory;\n}]);\n'use strict';\n\nangular.module('sp.factories').factory('projectFactory', ['$http', 'ENV', '$httpParamSerializer', function ($http, ENV, $httpParamSerializer) {\n var urlBase = '/api/projects';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var projectFactory = {};\n projectFactory.getProjects = function (mainProjectId, includeInactive) {\n var params = {\n mainProjectId: mainProjectId,\n includeInactive: includeInactive\n };\n return $http.get(url + '?' + $httpParamSerializer(params));\n };\n projectFactory.getProject = function (id) {\n return $http.get(url + '/' + id);\n };\n projectFactory.createProject = function (proj) {\n var out = JSON.stringify(proj);\n return $http.post(url, out);\n };\n projectFactory.updateProject = function (id, proj) {\n var out = JSON.stringify(proj);\n return $http.put(url + '/' + id, out);\n };\n projectFactory.activateProject = function (id) {\n return $http.put(url + '/' + id + '/activate');\n };\n projectFactory.deactivateProject = function (id) {\n return $http.put(url + '/' + id + '/deactivate');\n };\n projectFactory.deleteProject = function (id) {\n return $http.delete(url + '/' + id);\n };\n projectFactory.getFilterableProjects = function (mainProjectId, includeDeleted, includeInactive) {\n var params = {\n mainProjectId: mainProjectId,\n includeDeleted: includeDeleted,\n includeInactive: includeInactive\n };\n return $http.get(url + '/FilterableProjects?' + $httpParamSerializer(params));\n };\n projectFactory.repackageDTO = function (projectDTO) {\n return {\n project_name: projectDTO.Name,\n project_id: projectDTO.ProjectId,\n project_short_name: projectDTO.ShortName,\n main_project_name: projectDTO.MainProjectName,\n main_project_id: projectDTO.MainProjectId,\n gate_in_id: projectDTO.DefaultInGateId,\n gate_in_name: projectDTO.DefaultInGateName,\n gate_out_id: projectDTO.DefaultOutGateId,\n gate_out_name: projectDTO.DefaultOutGateName,\n city: projectDTO.City,\n is_active: projectDTO.IsActive,\n comments: projectDTO.Comments\n };\n };\n projectFactory.repackageDTOArray = function (projectDTOArray) {\n if (!projectDTOArray) {\n return [];\n }\n var projectArray = [];\n angular.forEach(projectDTOArray, function (projectDTO) {\n projectArray.push(projectFactory.repackageDTO(projectDTO));\n });\n return projectArray;\n };\n return projectFactory;\n}]);\n'use strict';\n\nfactories.factory('routeFactory', ['$http', '$httpParamSerializer', 'ENV', '$translate', '$filter', function ($http, $httpParamSerializer, ENV, $translate, $filter) {\n var urlBase = '/api/routes';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var routeFactory = {};\n routeFactory.getRouteTemplates = function (includeInactive) {\n var params = {\n includeInactive: includeInactive\n };\n return $http.get(url + '/RouteTemplates?' + $httpParamSerializer(params));\n };\n routeFactory.getRouteTemplatesByMainProjectId = function (includeInactive, mainProjectId) {\n var params = {\n includeInactive: includeInactive,\n mainProjectId: mainProjectId\n };\n return $http.get(url + '/RouteTemplates?' + $httpParamSerializer(params));\n };\n routeFactory.getRoute = function (id) {\n return $http.get(url + '/' + id);\n };\n routeFactory.createRoute = function (route) {\n var out = JSON.stringify(route);\n return $http.post(url, out);\n };\n routeFactory.updateRoute = function (id, route) {\n var out = JSON.stringify(route);\n return $http.put(url + '/' + id, out);\n };\n routeFactory.activateRoute = function (id) {\n return $http.put(url + '/' + id + '/activate');\n };\n routeFactory.deactivateRoute = function (id) {\n return $http.put(url + '/' + id + '/deactivate');\n };\n routeFactory.deleteRoute = function (id) {\n return $http.delete(url + '/' + id);\n };\n routeFactory.createDTO = function (route, isTemplate) {\n var timeType = -1;\n if (route.is_afternoon) timeType = DeliveryTimeTypeEnum.AFTERNOON;else if (route.is_forenoon) timeType = DeliveryTimeTypeEnum.FORENOON;else timeType = DeliveryTimeTypeEnum.SPECIFIC;\n var isActive = route.is_active;\n if (typeof route.is_active === 'undefined') isActive = true;\n\n // RouteDTO\n return {\n \"RouteId\": route.route_id,\n \"Name\": route.route_name,\n \"MainProjectId\": route.main_project_id,\n \"VehicleId\": route.vehicle_id,\n \"Time\": route.time,\n \"DeliveryTimeTypeId\": timeType,\n \"IsTemplate\": isTemplate,\n \"SourceTemplateId\": route.source_template_id,\n \"IsActive\": isActive,\n \"Comments\": route.comments\n };\n };\n function repackageDTO(routeDTO) {\n var displayTime = null;\n switch (routeDTO.DeliveryTimeTypeId) {\n case DeliveryTimeTypeEnum.SPECIFIC:\n displayTime = $filter('toTime')(routeDTO.Time);\n break;\n case DeliveryTimeTypeEnum.AFTERNOON:\n displayTime = $translate.instant('AFTERNOON_SHORT');\n break;\n case DeliveryTimeTypeEnum.FORENOON:\n displayTime = $translate.instant('FORENOON_SHORT');\n break;\n }\n var repackagedDTO = {\n route_id: routeDTO.RouteId,\n route_name: routeDTO.Name,\n full_name: routeDTO.Name + ' ' + displayTime,\n main_project_id: routeDTO.MainProjectId,\n main_project_name: routeDTO.MainProjectName,\n display_time: displayTime,\n delivery_time_type_id: routeDTO.DeliveryTimeTypeId,\n time: $filter('toTime')(routeDTO.Time),\n is_afternoon: routeDTO.DeliveryTimeTypeId === DeliveryTimeTypeEnum.AFTERNOON,\n is_forenoon: routeDTO.DeliveryTimeTypeId === DeliveryTimeTypeEnum.FORENOON,\n vehicle_id: routeDTO.VehicleId,\n vehicle_name: routeDTO.VehicleName,\n is_template: routeDTO.IsTemplate,\n source_template_id: routeDTO.SourceTemplateId,\n is_active: routeDTO.IsActive,\n comments: routeDTO.Comments\n };\n return repackagedDTO;\n }\n ;\n routeFactory.repackageDTOArray = function (routeDTOArray) {\n var repackagedDTOArray = [];\n if (!routeDTOArray) {\n return [];\n }\n angular.forEach(routeDTOArray, function (routeDTO) {\n repackagedDTOArray.push(repackageDTO(routeDTO));\n });\n return repackagedDTOArray;\n };\n return routeFactory;\n}]);\n'use strict';\n\nfactories.factory('shippingFactory', ['$http', '$httpParamSerializer', 'ENV', function ($http, $httpParamSerializer, ENV) {\n var urlBase = '/api/shippings';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var shippingFactory = {};\n shippingFactory.getShippings = function (includeInactive) {\n var params = {\n includeInactive: includeInactive\n };\n return $http.get(url + '?' + $httpParamSerializer(params));\n };\n shippingFactory.getShippingsByMainProjectId = function (includeInactive, mainProjectId) {\n var params = {\n includeInactive: includeInactive,\n mainProjectId: mainProjectId\n };\n return $http.get(url + '?' + $httpParamSerializer(params));\n };\n shippingFactory.getShipping = function (id) {\n return $http.get(url + '/' + id);\n };\n shippingFactory.createShipping = function (shipping) {\n var out = JSON.stringify(shipping);\n return $http.post(url, out);\n };\n shippingFactory.updateShipping = function (id, shipping) {\n var out = JSON.stringify(shipping);\n return $http.put(url + '/' + id, out);\n };\n shippingFactory.activateShipping = function (id) {\n return $http.put(url + '/' + id + '/activate');\n };\n shippingFactory.deactivateShipping = function (id) {\n return $http.put(url + '/' + id + '/deactivate');\n };\n shippingFactory.deleteShipping = function (id) {\n return $http.delete(url + '/' + id);\n };\n shippingFactory.createDTO = function (shipping) {\n var isActive = true;\n if (typeof shipping.is_active !== 'undefined') isActive = shipping.is_active;\n return {\n \"ShippingId\": shipping.shipping_id,\n \"Name\": shipping.shipping_name,\n \"MainProjectId\": shipping.main_project_id,\n \"IsExpress\": !!shipping.is_express,\n \"IsNonWorkHours\": !!shipping.is_non_work_hours,\n \"UnifaunReference\": shipping.unifaun_reference,\n \"IsActive\": isActive,\n \"Comments\": shipping.comments\n };\n };\n shippingFactory.repackageDTO = function (DTO) {\n return {\n shipping_id: DTO.ShippingId,\n shipping_name: DTO.Name,\n main_project_id: DTO.MainProjectId,\n main_project_name: DTO.MainProjectName,\n is_express: DTO.IsExpress,\n is_non_work_hours: DTO.IsNonWorkHours,\n unifaun_reference: DTO.UnifaunReference,\n is_active: DTO.IsActive\n };\n };\n shippingFactory.repackageDTOArray = function (DTOArray) {\n var repackagedDTOArray = [];\n if (!DTOArray) {\n return [];\n }\n angular.forEach(DTOArray, function (DTO) {\n repackagedDTOArray.push(shippingFactory.repackageDTO(DTO));\n });\n return repackagedDTOArray;\n };\n return shippingFactory;\n}]);\n'use strict';\n\nfactories.factory('statisticsReportFactory', ['$http', '$httpParamSerializer', 'ENV', function ($http, $httpParamSerializer, ENV) {\n var urlBase = '/api/statistics';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var statisticsReportFactory = {};\n statisticsReportFactory.getDeliveryReport = function (subProjectIDs, fromDate, toDate) {\n var params = {\n subProjectIDs: subProjectIDs,\n fromDate: fromDate,\n toDate: toDate\n };\n return $http.get(url + '/Delivery?' + $httpParamSerializer(params));\n };\n statisticsReportFactory.getPlanningReport = function (mainProjectId, fromDate, toDate) {\n var params = {\n mainProjectId: mainProjectId,\n fromDate: fromDate,\n toDate: toDate\n };\n return $http.get(url + '/Planning?' + $httpParamSerializer(params));\n };\n statisticsReportFactory.repackageDTO = function (DTO) {\n var excelBinaryString = atob(DTO.ExcelData);\n var excelBytes = new Uint8Array(excelBinaryString.length);\n for (var i = 0; i < excelBytes.length; i++) {\n excelBytes[i] = excelBinaryString.charCodeAt(i);\n }\n return {\n totalRecordCount: DTO.TotalRecordCount,\n recordCount: DTO.RetrievedRecordCount,\n excelArrayBuffer: excelBytes.buffer\n };\n };\n return statisticsReportFactory;\n}]);\n'use strict';\n\nangular.module('sp.factories').factory('subProjectFactory', ['$http', '$httpParamSerializer', 'ENV', function ($http, $httpParamSerializer, ENV) {\n var urlBase = '/api/subprojects';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var subProjectFactory = {};\n subProjectFactory.getSubProjects = function (mainProjectId, includeInactive) {\n var params = {\n mainProjectId: mainProjectId,\n includeInactive: includeInactive\n };\n return $http.get(url + '?' + $httpParamSerializer(params));\n };\n subProjectFactory.getSubProject = function (id) {\n return $http.get(url + '/' + id);\n };\n subProjectFactory.createSubProject = function (project) {\n var out = JSON.stringify(project);\n return $http.post(url, out);\n };\n subProjectFactory.updateSubProject = function (id, project) {\n var out = JSON.stringify(project);\n return $http.put(url + '/' + id, out);\n };\n subProjectFactory.activateSubProject = function (id) {\n return $http.put(url + '/' + id + '/activate');\n };\n subProjectFactory.deactivateSubProject = function (id) {\n return $http.put(url + '/' + id + '/deactivate');\n };\n subProjectFactory.deleteSubProject = function (id) {\n return $http.delete(url + '/' + id);\n };\n subProjectFactory.createDTO = function (DTO) {\n return {\n \"Name\": DTO.sub_project_name,\n \"SubProjectId\": DTO.sub_project_id,\n \"ProjectId\": DTO.project_id,\n \"IsActive\": true,\n \"Comments\": DTO.comments\n };\n };\n subProjectFactory.getFilterableSubProjects = function (mainProjectId, includeDeleted, includeInactive) {\n var params = {\n mainProjectId: mainProjectId,\n includeDeleted: includeDeleted,\n includeInactive: includeInactive\n };\n return $http.get(url + '/FilterableSubProjects?' + $httpParamSerializer(params));\n };\n subProjectFactory.repackageDTO = function (DTO) {\n return {\n sub_project_name: DTO.Name,\n sub_project_id: DTO.SubProjectId,\n sub_project_short_name: DTO.ShortName,\n project_id: DTO.ProjectId,\n project_name: DTO.ProjectName,\n main_project_id: DTO.MainProjectId,\n main_project_name: DTO.MainProjectName,\n is_active: DTO.IsActive,\n comments: DTO.Comments\n };\n };\n subProjectFactory.repackageDTOArray = function (DTOArray) {\n var repackagedDTOArray = [];\n if (!DTOArray) {\n return [];\n }\n angular.forEach(DTOArray, function (DTO) {\n repackagedDTOArray.push(subProjectFactory.repackageDTO(DTO));\n });\n return repackagedDTOArray;\n };\n return subProjectFactory;\n}]);\n'use strict';\n\nfactories.factory('supplierFactory', ['$http', 'ENV', function ($http, ENV) {\n var urlBase = '/api/suppliers';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var supplierFactory = {};\n supplierFactory.getSuppliers = function () {\n return $http.get(url);\n };\n supplierFactory.getSupplier = function (id) {\n return $http.get(url + '/' + id);\n };\n supplierFactory.createSupplier = function (supplier) {\n var out = JSON.stringify(supplier);\n return $http.post(url, out);\n };\n supplierFactory.updateSupplier = function (id, supplier) {\n var out = JSON.stringify(supplier);\n return $http.put(url + '/' + id, out);\n };\n supplierFactory.activateSupplier = function (id) {\n return $http.put(url + '/' + id + '/activate');\n };\n supplierFactory.deactivateSupplier = function (id) {\n return $http.put(url + '/' + id + '/deactivate');\n };\n supplierFactory.deleteSupplier = function (id) {\n return $http.delete(url + '/' + id);\n };\n return supplierFactory;\n}]);\n'use strict';\n\nfactories.factory('userFactory', ['$http', '$uibModal', 'ENV', 'authFactory', '$localStorage', 'errorService', 'mainProjectFactory', 'workOrderFactory', '$rootScope', 'languageFactory', 'companyFactory', 'projectFactory', 'quickGuideService', function ($http, $uibModal, ENV, authFactory, $localStorage, errorService, mainProjectFactory, workOrderFactory, $rootScope, languageFactory, companyFactory, projectFactory, quickGuideService) {\n var urlBase = '/api/users';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var userFactory = {};\n userFactory.createUser = function (user, role) {\n var out = JSON.stringify(user);\n return $http.post(url + '/' + 'register?role=' + role, out);\n };\n userFactory.updateUser = function (user) {\n var out = JSON.stringify(user);\n return $http.put(url + '/' + user.UserId, out);\n };\n userFactory.activateUser = function (activateAccount) {\n var out = JSON.stringify(activateAccount);\n return $http.post(url + '/Activate', out);\n };\n userFactory.changeQuickGuideShown = function (hideQuickGuide) {\n return $http.put(url + '/ChangeQuickGuideShown?hideQuickGuide=' + hideQuickGuide);\n };\n userFactory.requestPasswordReset = function (passwordResetRequestDTO) {\n var out = JSON.stringify(passwordResetRequestDTO);\n return $http.post(url + '/RequestPasswordReset', out);\n };\n userFactory.resendActivationLink = function (userDTO) {\n var out = JSON.stringify(userDTO);\n return $http.post(url + '/ResendActivationLink', out);\n };\n userFactory.resetPassword = function (passwordResetDTO) {\n var out = JSON.stringify(passwordResetDTO);\n return $http.post(url + '/ResetPassword', out);\n };\n userFactory.changePassword = function (changePasswordDTO) {\n var out = JSON.stringify(changePasswordDTO);\n return $http.post(url + '/ChangePassword', out);\n };\n userFactory.getUser = function (id) {\n return $http.get(endPoint + '/api/users/' + id);\n };\n userFactory.reActivateUsers = function (ids) {\n var out = JSON.stringify(ids);\n return $http.post(url + '/ReActivate', out);\n };\n userFactory.deactivateUsers = function (ids) {\n var out = JSON.stringify(ids);\n return $http.post(url + '/Deactivate', out);\n };\n userFactory.getUsers = function (filterAndPagination) {\n var out = JSON.stringify(filterAndPagination);\n return $http.post(endPoint + '/api/users/GetUsers', out);\n };\n userFactory.getMe = function () {\n return $http.get(endPoint + '/api/users/me');\n };\n userFactory.updateMe = function (user) {\n var out = JSON.stringify(user);\n return $http.put(endPoint + '/api/users/me', user);\n };\n userFactory.isUserDataSet = function () {\n return $localStorage.user.companies && $localStorage.user.email && $localStorage.user.user_name && $localStorage.user.phone_number && $localStorage.user.role_id && $localStorage.user.user_id && $localStorage.user.work_orders && $localStorage.user.login && $localStorage.user.user_role_name && $localStorage.user.hideQuickGuideForUser;\n };\n userFactory.setUserData = function (forceRefresh) {\n if ($localStorage.user.isLoggedIn && (!userFactory.isUserDataSet() || forceRefresh)) {\n authFactory.getMe().then(function (response) {\n var data = response.data;\n $localStorage.user.companies = companyFactory.repackageCompanyDTOArray(data.Companies);\n $localStorage.user.email = data.Email;\n $localStorage.user.login = data.Login;\n $localStorage.user.user_name = data.Name;\n $localStorage.user.phone_number = data.PhoneNumber;\n $localStorage.user.role_id = data.RoleId;\n $localStorage.user.user_role_name = data.RoleName.toUpperCase();\n $localStorage.user.user_id = data.UserId;\n $localStorage.user.work_orders = workOrderFactory.repackageWorkOrderDTOArray(data.WorkOrders);\n $localStorage.user.main_projects = mainProjectFactory.repackageDTOArray(data.MainProjects);\n $localStorage.user.projects = projectFactory.repackageDTOArray(data.Projects);\n $localStorage.user.sub_projects = projectFactory.repackageDTOArray(data.SubProjects);\n $localStorage.user.hideQuickGuideForUser = data.HideQuickGuide;\n\n // Set session main project if none\n if (!$localStorage.user.session_main_project && $localStorage.user.main_projects.length > 0) {\n $localStorage.user.session_main_project = $localStorage.user.main_projects[0];\n var divisionId = $localStorage.user.main_projects[0].division_id;\n languageFactory.changeLanguageByDivisionId(divisionId);\n } else if ($localStorage.user.session_main_project && $localStorage.user.main_projects) {\n // Refresh session data\n\n angular.forEach($localStorage.user.main_projects, function (mainProject) {\n if (mainProject.main_project_id === $localStorage.user.session_main_project.main_project_id) {\n $localStorage.user.session_main_project = mainProject;\n }\n });\n }\n if (data.IsPasswordChangeRequired) {\n $uibModal.open({\n animation: false,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/user/settings/settings_form.html',\n controller: 'SettingsController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n isPasswordChangeRequired: function isPasswordChangeRequired() {\n return true;\n }\n }\n });\n }\n if (!$localStorage.user.hideQuickGuideForUser && !sessionStorage.hideQuickGuideThisSession) {\n quickGuideService.openQuickGuide();\n }\n $rootScope.$broadcast('updatedUserData');\n }, function (error) {\n errorService.handleError(error);\n });\n }\n };\n return userFactory;\n}]);\n'use strict';\n\nfactories.factory('vehicleFactory', ['$http', 'ENV', '$httpParamSerializer', function ($http, ENV, $httpParamSerializer) {\n var urlBase = '/api/vehicles';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var vehicleFactory = {};\n vehicleFactory.getVehicles = function (includeInactive) {\n var params = {\n includeInactive: includeInactive\n };\n return $http.get(url + '?' + $httpParamSerializer(params));\n };\n vehicleFactory.getVehiclesByMainProjectId = function (includeInactive, mainProjectId) {\n var params = {\n includeInactive: includeInactive,\n mainProjectId: mainProjectId\n };\n return $http.get(url + '?' + $httpParamSerializer(params));\n };\n vehicleFactory.getVehicle = function (id) {\n return $http.get(url + '/' + id);\n };\n vehicleFactory.createVehicle = function (vehicle) {\n var out = JSON.stringify(vehicle);\n return $http.post(url, out);\n };\n vehicleFactory.updateVehicle = function (id, vehicle) {\n var out = JSON.stringify(vehicle);\n return $http.put(url + '/' + id, out);\n };\n vehicleFactory.activateVehicle = function (id) {\n return $http.put(url + '/' + id + '/activate');\n };\n vehicleFactory.deactivateVehicle = function (id) {\n return $http.put(url + '/' + id + '/deactivate');\n };\n vehicleFactory.deleteVehicle = function (id) {\n return $http.delete(url + '/' + id);\n };\n vehicleFactory.repackageDTO = function (DTO) {\n var repackagedDTO = {\n vehicle_id: DTO.VehicleId,\n vehicle_name: DTO.Name,\n vehicle_type_id: DTO.VehicleTypeId,\n vehicle_type_code: DTO.VehicleTypeCode,\n main_project_id: DTO.MainProjectId,\n main_project_name: DTO.MainProjectName,\n is_active: DTO.IsActive\n };\n return repackagedDTO;\n };\n vehicleFactory.repackageDTOArray = function (DTOArray) {\n var repackagedDTOArray = [];\n if (!DTOArray) {\n return [];\n }\n angular.forEach(DTOArray, function (DTO) {\n repackagedDTOArray.push(vehicleFactory.repackageDTO(DTO));\n });\n return repackagedDTOArray;\n };\n return vehicleFactory;\n}]);\n'use strict';\n\nfactories.factory('vehicleTypeFactory', ['$http', 'ENV', '$httpParamSerializer', function ($http, ENV, $httpParamSerializer) {\n var urlBase = '/api/vehicletypes';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var vehicleTypeFactory = {};\n vehicleTypeFactory.getVehicleTypes = function (mainProjectId, includeInactive) {\n var params = {\n mainProjectId: mainProjectId,\n includeInactive: includeInactive\n };\n return $http.get(url + '?' + $httpParamSerializer(params));\n };\n vehicleTypeFactory.getVehicleType = function (id) {\n return $http.get(url + '/' + id);\n };\n vehicleTypeFactory.createVehicleType = function (type) {\n var out = JSON.stringify(type);\n return $http.post(url, out);\n };\n vehicleTypeFactory.updateVehicleType = function (id, type) {\n var out = JSON.stringify(type);\n return $http.put(url + '/' + id, out);\n };\n vehicleTypeFactory.activateVehicleType = function (id) {\n return $http.put(url + '/' + id + '/activate');\n };\n vehicleTypeFactory.deactivateVehicleType = function (id) {\n return $http.put(url + '/' + id + '/deactivate');\n };\n vehicleTypeFactory.deleteVehicleType = function (id) {\n return $http.delete(url + '/' + id);\n };\n vehicleTypeFactory.repackageDTO = function (DTO) {\n return {\n vehicle_type_id: DTO.VehicleTypeId,\n vehicle_type_code: DTO.Code,\n vehicle_capacity: DTO.Capacity,\n main_project_id: DTO.MainProjectId,\n main_project_name: DTO.MainProjectName,\n is_active: DTO.IsActive\n };\n };\n vehicleTypeFactory.repackageDTOArray = function (DTOArray) {\n var repackagedDTOArray = [];\n if (!DTOArray) {\n return [];\n }\n angular.forEach(DTOArray, function (DTO) {\n repackagedDTOArray.push(vehicleTypeFactory.repackageDTO(DTO));\n });\n return repackagedDTOArray;\n };\n return vehicleTypeFactory;\n}]);\n'use strict';\n\nangular.module('sp.factories').factory('workOrderFactory', ['$http', 'ENV', 'subProjectFactory', '$httpParamSerializer', 'generalHelperService', function ($http, ENV, subProjectFactory, $httpParamSerializer, generalHelperService) {\n var urlBase = '/api/workorders';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var workOrderFactory = {};\n workOrderFactory.getWorkOrders = function (mainProjectId, includeInactive) {\n var params = {\n mainProjectId: mainProjectId,\n includeInactive: includeInactive\n };\n return $http.get(url + '?' + $httpParamSerializer(params));\n };\n\n /**\r\n * Retrieve a WorkOrderDTO from backend.\r\n */\n workOrderFactory.getWorkOrder = function (id) {\n return $http.get(url + '/' + id);\n };\n workOrderFactory.getAllWorkOrdersByCompanyId = function (id) {\n return $http.get(endPoint + '/api/companies/' + id + '/workorders');\n };\n workOrderFactory.getWorkOrdersByCompanyId = function (id, mainProjectId) {\n var params = {\n mainProjectId: mainProjectId\n };\n return $http.get(endPoint + '/api/companies/' + id + '/workorders' + '?' + $httpParamSerializer(params));\n };\n workOrderFactory.createWorkOrder = function (workOrderDTO) {\n var out = JSON.stringify(workOrderDTO);\n return $http.post(url, out);\n };\n workOrderFactory.updateWorkOrder = function (id, workOrderDTO) {\n var out = JSON.stringify(workOrderDTO);\n return $http.put(url + '/' + id, out);\n };\n workOrderFactory.activateWorkOrder = function (id) {\n return $http.put(url + '/' + id + '/activate');\n };\n workOrderFactory.deactivateWorkOrder = function (id) {\n return $http.put(url + '/' + id + '/deactivate');\n };\n workOrderFactory.deleteWorkOrder = function (id) {\n return $http.delete(url + '/' + id);\n };\n workOrderFactory.createEpixXML = function (id) {\n return $http.post(url + '/epix/' + id);\n };\n workOrderFactory.getFilterableWorkorders = function (mainProjectId, includeDeleted, includeInactive) {\n var params = {\n mainProjectId: mainProjectId,\n includeDeleted: includeDeleted,\n includeInactive: includeInactive\n };\n return $http.get(url + '/FilterableWorkOrders?' + $httpParamSerializer(params));\n };\n\n /**\r\n * Convert a js workOrder to a WorkOrderDTO, to send to backend\r\n */\n workOrderFactory.packageWorkOrder = function (workOrder) {\n return {\n \"Name\": workOrder.work_order_name,\n \"WorkOrderId\": workOrder.work_order_id,\n \"ShortName\": workOrder.work_order_short_name,\n \"WorkOrderType\": workOrder.work_order_type,\n \"WorkOrderGroup\": workOrder.work_order_group,\n \"ContactName\": workOrder.contact_name,\n \"ContactEmail\": workOrder.contact_email,\n \"ContactPhone\": workOrder.contact_phone,\n \"SubProjects\": workOrder.subProjectsOut,\n \"CompanyId\": workOrder.company_id,\n \"CompanyName\": workOrder.company_name,\n \"CompanyRoleId\": 1,\n \"HasGateIntegration\": workOrder.has_gate_integration,\n \"ErpSystemReference\": workOrder.erp_system_reference,\n \"IsActive\": workOrder.is_active,\n \"Comments\": workOrder.comments,\n \"ErpSystemShortName\": workOrder.erp_system_short_name,\n \"ErpGroup\": workOrder.work_order_group,\n \"ErpType\": workOrder.work_order_type,\n \"NotificationTemplates\": workOrder.notificationConfiguration\n };\n };\n workOrderFactory.workOrderDisplayName = function (name, erpSystemReference) {\n return name + ' (' + erpSystemReference + ')';\n };\n workOrderFactory.repackageWorkOrderDTO = function (workOrderDTO) {\n var workOrder = {\n main_project_id: workOrderDTO.SubProjects.length > 0 ? workOrderDTO.SubProjects[0].MainProjectId : null,\n work_order_id: workOrderDTO.WorkOrderId,\n work_order_name: workOrderDTO.Name,\n work_order_short_name: workOrderDTO.ShortName,\n sub_projects: subProjectFactory.repackageDTOArray(workOrderDTO.SubProjects),\n wo_projects: workOrderDTO.WOProjects,\n project_id: workOrderDTO.WOProjects.length ? workOrderDTO.WOProjects[0].ProjectId : null,\n project_name: workOrderDTO.WOProjects.length ? workOrderDTO.WOProjects[0].Name : '',\n contact_name: workOrderDTO.ContactName,\n contact_email: workOrderDTO.ContactEmail,\n contact_phone: workOrderDTO.ContactPhone,\n company_id: workOrderDTO.CompanyId,\n company_name: workOrderDTO.CompanyName,\n company_role_id: workOrderDTO.CompanyRoleId,\n company_role_name: workOrderDTO.CompanyRoleName,\n erp_system_reference: workOrderDTO.ErpSystemReference,\n erp_system_short_name: workOrderDTO.ErpSystemShortName,\n erp_display_name: workOrderFactory.workOrderDisplayName(workOrderDTO.ErpSystemShortName, workOrderDTO.ErpSystemReference),\n work_order_display_name: workOrderFactory.workOrderDisplayName(workOrderDTO.Name, workOrderDTO.ErpSystemReference),\n pyramid_order_number: workOrderDTO.ErpSystemReference,\n work_order_group: workOrderDTO.ErpGroup,\n work_order_type: workOrderDTO.ErpType,\n has_gate_integration: workOrderDTO.HasGateIntegration,\n is_active: workOrderDTO.IsActive,\n comments: workOrderDTO.Comments\n };\n workOrder.notificationConfiguration = workOrderDTO.NotificationTemplates.reduce(function (acc, conf) {\n acc.push({\n NotificationType: conf.NotificationType,\n NotificationTemplateName: generalHelperService.getKeyByValue(NotificationTypeEnum, conf.NotificationType),\n IsSelected: conf.IsSelected\n });\n return acc;\n }, []);\n return workOrder;\n };\n workOrderFactory.repackageWorkOrderDTOArray = function (workOrderDTOArray) {\n if (!workOrderDTOArray) {\n return [];\n }\n var workOrderArray = [];\n angular.forEach(workOrderDTOArray, function (workOrderDTO) {\n workOrderArray.push(workOrderFactory.repackageWorkOrderDTO(workOrderDTO));\n });\n workOrderArray.sort(function (wo1, wo2) {\n return wo1.work_order_display_name.localeCompare(wo2.work_order_display_name);\n });\n return workOrderArray;\n };\n workOrderFactory.extractUniqueCompaniesFromWorkOrders = function (workOrders) {\n var uniqueCompanies = [];\n angular.forEach(workOrders, function (workOrder) {\n if (generalHelperService.isUnique(uniqueCompanies, 'company_id', workOrder.company_id)) {\n uniqueCompanies.push({\n company_id: workOrder.company_id,\n company_name: workOrder.company_name\n });\n }\n });\n uniqueCompanies.sort(function (company1, company2) {\n return company1.company_name.localeCompare(company2.company_name);\n });\n\n // TODO: rename company_name to company_display_name?\n return uniqueCompanies;\n };\n workOrderFactory.getSuppliers = function (workOrderId) {\n return $http.get(url + '/' + workOrderId + '/suppliers');\n };\n workOrderFactory.deleteSupplier = function (workOrderId, supplierId) {\n return $http.delete(url + '/' + workOrderId + '/supplier/' + supplierId);\n };\n return workOrderFactory;\n}]);\n'use strict';\n\nangular.module('sp.factories').factory('materialFactory', ['$http', '$httpParamSerializer', 'ENV', 'errorService', function ($http, $httpParamSerializer, ENV, errorService) {\n var urlBase = '/api/Materials';\n var endPoint = ENV.apiEndpoint;\n var url = endPoint + urlBase;\n var materialFactory = {};\n materialFactory.getMaterials = function (mainProjectId) {\n var params = {\n mainProjectId: mainProjectId\n };\n return $http.get(url + '/balance?' + $httpParamSerializer(params)).then(function (response) {\n return repackageDTOArray(response.data);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n function repackageDTOArray(articleOrderLineDTOArray) {\n var articles = [];\n angular.forEach(articleOrderLineDTOArray, function (articleOrderLineDTO) {\n var article = repackageDTO(articleOrderLineDTO);\n articles.push(article);\n });\n return articles;\n }\n ;\n function repackageDTO(articleDTO) {\n var article = {\n article_id: articleDTO.Id,\n batch: articleDTO.ProductionBatchId ? articleDTO.ProductionBatchId : \"\",\n storage_location: articleDTO.StorageLocation ? articleDTO.StorageLocation : \"\",\n article_name: articleDTO.Name ? articleDTO.Name : \"\",\n unit: articleDTO.Unit ? articleDTO.Unit : \"\",\n weight: articleDTO.Weight,\n availability: articleDTO.Availability,\n company_name: articleDTO.CompanyName,\n work_order_name: articleDTO.WorkOrderName\n };\n return article;\n }\n materialFactory.getMaterialsExport = function (mainProjectId) {\n var params = {\n mainProjectId: mainProjectId\n };\n return $http.get(url + '/balance/export?' + $httpParamSerializer(params)).then(function (response) {\n var excelBinaryString = atob(response.data.ExcelData);\n var excelBytes = new Uint8Array(excelBinaryString.length);\n for (var i = 0; i < excelBytes.length; i++) {\n excelBytes[i] = excelBinaryString.charCodeAt(i);\n }\n return new Blob([excelBytes.buffer], {\n type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n });\n });\n };\n return materialFactory;\n}]);\nangular.module('serviplan').factory('versionInterceptor', ['$rootScope', '$q', 'spVersion', function ($rootScope, $q, spVersion) {\n function isOutdatedSite(response) {\n var versionHeader = response.headers('SP-Version');\n return versionHeader && versionHeader !== spVersion;\n }\n return {\n response: function response(_response) {\n if (isOutdatedSite(_response)) {\n $rootScope.$broadcast('siteOutdated');\n }\n return _response;\n },\n responseError: function responseError(response) {\n if (isOutdatedSite(response)) {\n $rootScope.$broadcast('siteOutdatedError');\n }\n return $q.reject(response);\n }\n };\n}]);\n'use strict';\n\nangular.module('sp.services').service('generalHelperService', [function () {\n this.isUnique = function (array, idKey, value) {\n var unique = true;\n array.forEach(function (entry, index) {\n if (entry[idKey] === value) {\n unique = false;\n }\n });\n return unique;\n };\n this.getKeyByValue = function (collection, findValue) {\n var keyFound = null;\n angular.forEach(collection, function (value, key) {\n if (value === findValue) {\n keyFound = key;\n }\n });\n return keyFound;\n };\n\n // Color utility functions\n // Pin color-id mapper\n this.generateFirstColorClass = function (id) {\n return 'pin-color-' + id % 10;\n };\n this.generateSecondColorClass = function (id) {\n return 'pin-bg-color-' + Math.floor(id % 100 / 10);\n };\n\n // Order helpers\n this.calculateOrderWeight = function (order) {\n var weightSum = 0;\n angular.forEach(order.packages, function (pack, index) {\n weightSum += pack.Weight;\n });\n if (order.order_type === OrderTypeEnum.TRANSSHIPMENT) {\n weightSum += order.other_weight;\n weightSum += order.pallet_weight;\n weightSum += order.package_weight;\n }\n return weightSum;\n };\n\n // PrinterHelper\n this.printDiv = function (divId) {\n var printContents = document.getElementById(divId).cloneNode(true);\n $(\".sp-close-wrapper\", printContents).remove();\n $(\"#PrintBtn\", printContents).remove();\n var printContentsInner = printContents.innerHTML;\n var popupWin = window.open('', '_blank', 'width=800,height=600');\n popupWin.document.open();\n popupWin.document.write('' + printContentsInner + '');\n popupWin.document.close();\n };\n\n // Time helpers\n\n /**\r\n * Parse a datetime or date string in format \"YYYY-MM-DD HH:mm\" or \"YYYY-MM-DD\" to a moment object.\r\n *\r\n * The \r\n * @param {string} dateTimeString \r\n * @returns {moment} \r\n */\n this.dateTimeStringToMoment = function (dateTimeString) {\n return moment(dateTimeString, [\"YYYY-MM-DD HH:mm\", \"YYYY-MM-DD\", \"HH:mm\"], true);\n };\n this.parseDate = function (timeDate) {\n if (timeDate === null) return '';\n var split = timeDate.split('T');\n return split[0];\n };\n this.parseTime = function (timeDate) {\n if (timeDate === null) return '';\n var split = timeDate.slice(0, -3).split('T');\n return split[1];\n };\n this.parseDateSpan = function (timeDateI, timeDateF) {\n if (timeDateI === null || timeDateF === null) return '';\n var splitI = timeDateI.split('T');\n var splitF = timeDateF.split('T');\n return splitI[0] + '-' + splitF[0];\n };\n this.parseTimeSpan = function (timeDateI, timeDateF) {\n if (timeDateI === null || timeDateF === null) return '';\n var splitI = timeDateI.slice(0, -3).split('T');\n var splitF = timeDateF.slice(0, -3).split('T');\n return splitI[1] + '-' + splitF[1];\n };\n\n /**\r\n * Method used to ensure that a time interval is valid, i.e., that the initial time is not later than the final time.\r\n *\r\n * The method returns the final string if it represents a later time than initial.\r\n * In all other cases, the method returns the initial string.\r\n *\r\n * @param {string} initial - The initial time as a datetime string, format \"YYYY-MM-DD HH:mm\" or \"YYYY-MM-DD\"\r\n * @param {string} final - The final (end) time as a datetime string, format \"YYYY-MM-DD HH:mm\", \"YYYY-MM-DD\" or undefined\r\n * @returns {string} - \r\n */\n this.getValidInitialDateTime = function (initial, final) {\n if (!final) return initial;\n var initialDate = this.dateTimeStringToMoment(initial);\n var finalDate = this.dateTimeStringToMoment(final);\n if (!initialDate.isValid() || !finalDate.isValid()) return initial;\n return initialDate.isBefore(finalDate) ? initial : final;\n };\n\n /** See getValidInitialDateTime.\r\n */\n this.getValidFinalDateTime = function (initial, final) {\n if (!initial) return final;\n var initialDate = this.dateTimeStringToMoment(initial);\n var finalDate = this.dateTimeStringToMoment(final);\n if (!initialDate.isValid() || !finalDate.isValid()) return final;\n return initialDate.isBefore(finalDate) ? final : initial;\n };\n\n /**\r\n * Method to ensure that the given date-time is not in the past.\r\n * @param {string} dateTimeString - Date time string in the format \"YYYY-MM-DD HH:mm\".\r\n * @returns {string} - The given string, or a date time string representing the current time.\r\n */\n this.limitDateTimeToCurrent = function (dateTimeString) {\n var dateTime = moment(dateTimeString, \"YYYY-MM-DD HH:mm\", true);\n if (!dateTime.isValid()) return dateTimeString;\n var currentDateTime = moment();\n return dateTime.isAfter(currentDateTime) ? dateTimeString : this.dateToDateTimeString(currentDateTime);\n };\n this.limitDateTimeSpan = function (dateTimeFrom, dateTimeTo, minDuration, maxDuration, excludeTime) {\n var toDate = moment(dateTimeTo);\n var minDate = minDuration ? moment(dateTimeFrom).add(minDuration) : moment(dateTimeTo);\n var maxDate = moment(dateTimeFrom).add(maxDuration);\n if (toDate.isBefore(minDate)) {\n toDate = minDate;\n }\n if (toDate.isAfter(maxDate)) {\n toDate = maxDate;\n }\n return excludeTime ? this.dateToDateString(toDate) : this.dateToDateTimeString(toDate);\n };\n this.limitTimespan = function (startTime, endTime, minDuration, maxHour) {\n var end = this.dateTimeStringToMoment(endTime);\n var minTime = minDuration ? this.dateTimeStringToMoment(startTime).add(minDuration) : this.dateTimeStringToMoment(startTime);\n var maxTime = this.dateTimeStringToMoment(maxHour);\n if (end.isBefore(minTime)) {\n end = minTime;\n }\n if (end.isAfter(maxTime)) {\n end = maxTime;\n }\n return this.dateToTimeString(end);\n };\n this.addTimespanToDateTime = function (initialDateTime, timespan) {\n var newDate = moment(initialDateTime).add(timespan);\n return this.dateToDateTimeString(newDate);\n };\n this.addTimespanToTime = function (initialTime, timespan) {\n var newTime = this.dateTimeStringToMoment(initialTime).add(timespan);\n return this.dateToTimeString(newTime);\n };\n this.dateToDateTimeString = function (date) {\n return moment(date).format(\"YYYY-MM-DD HH:mm\");\n };\n this.dateToDateString = function (date) {\n return moment(date).format(\"YYYY-MM-DD\");\n };\n this.dateToTimeString = function (date) {\n return moment(date).format(\"HH:mm\");\n };\n this.generateNameMapFromEnum = function (enumCollection) {\n var map = {};\n for (var c in enumCollection) {\n map[enumCollection[c]] = c;\n }\n return map;\n };\n this.getEnumIds = function (enumCollection) {\n var array = [];\n for (var c in enumCollection) {\n array.push(enumCollection[c]);\n }\n return array;\n };\n this.areEquivalentArrays = function (array1, array2) {\n if (array1 === array2) return true;\n if (!array1 || !array2) return false;\n if (array1.length !== array2.length) return false;\n var sorted1 = array1.slice().sort();\n var sorted2 = array2.slice().sort();\n for (var i = 0; i < sorted1.length; ++i) {\n if (sorted1[i] !== sorted2[i]) return false;\n }\n return true;\n };\n}]);\n(function () {\n 'use strict';\n\n angular.module('sp.services').service('loadRecaptchaService', ['ENV', loadRecaptchaService]);\n function loadRecaptchaService(ENV) {\n this.loadApi = function () {\n $.getScript(\"https://www.google.com/recaptcha/api.js?render=\" + ENV.recaptchaSiteKey);\n };\n }\n})();\n'use strict';\n\nservices.service('recurringDirectDeliveryHelper', ['inputValidationService', function (inputValidationService) {\n (function () {\n var days = ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'];\n Date.prototype.getConvertedDay = function () {\n var dayIndex = this.getDay() - 1;\n if (dayIndex === -1) dayIndex = 6;\n return dayIndex;\n };\n\n // Returns the ISO week of the date.\n Date.prototype.getWeek = function () {\n var date = new Date(this.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);\n };\n })();\n function createTimeLine(recurringWeek, validFrom, validTo) {\n var refDate = new Date(validFrom);\n var endDate = new Date(validTo);\n var timeLine = [];\n timeLine.push({\n date: new Date(refDate.getTime()),\n recurringDay: recurringWeek[refDate.getConvertedDay()]\n });\n refDate.setDate(refDate.getDate() + 1);\n do {\n timeLine.push({\n date: new Date(refDate.getTime()),\n recurringDay: recurringWeek[refDate.getConvertedDay()]\n });\n refDate.setDate(refDate.getDate() + 1);\n } while (refDate.getTime() <= endDate.getTime());\n return timeLine;\n }\n this.calculateAllowedPassages = function (recurringWeek, validFrom, validTo, weekFrequency) {\n var allowedPassages = 0;\n if (!inputValidationService.isValidDate(validFrom) || !inputValidationService.isValidDate(validTo)) {\n return allowedPassages;\n }\n var timeLine = createTimeLine(recurringWeek, validFrom, validTo);\n if (weekFrequency == 1) {\n // all weeks\n angular.forEach(timeLine, function (data) {\n allowedPassages += data.recurringDay.slots.length * 2;\n });\n } else if (weekFrequency == 2) {\n // even weeks\n angular.forEach(timeLine, function (data) {\n if (data.date.getWeek() % 2 === 0) {\n allowedPassages += data.recurringDay.slots.length * 2;\n }\n });\n } else if (weekFrequency == 3) {\n // odd weeks\n angular.forEach(timeLine, function (data) {\n if (data.date.getWeek() % 2 !== 0) {\n allowedPassages += data.recurringDay.slots.length * 2;\n }\n });\n }\n return allowedPassages;\n };\n}]);\n'use strict';\n\nservices.service('additionalServiceStatusService', function () {\n // AdditionalServiceStatusTypeEnum = Object.freeze({\"ORDERED\": 1, \"CONFIRMED\": 2, \"COMPLETED\": 3, \"NOT_COMPLETED\": 4});\n this.isOrdered = function (statusTypeId) {\n return AdditionalServiceStatusTypeEnum.ORDERED === statusTypeId;\n };\n this.isConfirmed = function (statusTypeId) {\n return AdditionalServiceStatusTypeEnum.CONFIRMED === statusTypeId;\n };\n this.isCompleted = function (statusTypeId) {\n return AdditionalServiceStatusTypeEnum.COMPLETED === statusTypeId;\n };\n this.isNotCompleted = function (statusTypeId) {\n return AdditionalServiceStatusTypeEnum.NOT_COMPLETED === statusTypeId;\n };\n});\n'use strict';\n\nservices.service('dropdownService', function () {\n this.openDropdown = function (dropDownId, event) {\n var dropDown = angular.element(dropDownId);\n if (!dropDown.hasClass('open')) dropDown.addClass('open');\n event.stopPropagation();\n };\n});\nangular.module('sp.services').service('errorService', ['authFactory', function (authFactory) {\n this.handleError = function (error) {\n // Handle\n console.error(error);\n if (error.status === 401) {\n authFactory.logout();\n console.error(\"Unauthorized request, signing out...\");\n }\n };\n}]);\n'use strict';\n\nservices.service('inputValidationService', ['ALLOWED_FILE_EXTENTIONS', function (ALLOWED_FILE_EXTENTIONS) {\n var allowedExtentionsArray = ALLOWED_FILE_EXTENTIONS.split(', ');\n this.isValidInput = function (input) {\n if (typeof input === 'undefined' || input === '' || input === null) {\n return false;\n } else return true;\n };\n this.isValidOptionalInput = function (input) {\n if (typeof input === 'undefined') {\n return false;\n } else return true;\n };\n this.isValidDateTime = function (input) {\n if (typeof input === 'undefined') {\n return false;\n }\n var pattern = /\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}/i; // 2016-09-01 08:15\n return pattern.test(input);\n };\n this.isValidDate = function (input) {\n if (typeof input === 'undefined') {\n return false;\n }\n var pattern = /\\d{4}-\\d{2}-\\d{2}/i; // 2016-09-01\n return pattern.test(input);\n };\n this.isValidTime = function (input) {\n if (typeof input === 'undefined') {\n return false;\n }\n var pattern = /\\d{2}:\\d{2}/i; // 08:15\n return pattern.test(input);\n };\n this.isValidEmail = function (input) {\n if (typeof input === 'undefined') {\n return false;\n }\n var pattern = /[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/g;\n return pattern.test(input);\n };\n this.areValidFiles = function (files) {\n var areValidFiles = true;\n angular.forEach(files, function (file) {\n if (!file || !file.name) {\n areValidFiles = false;\n } else {\n var extention = \".\" + file.name.split('.').pop().toLowerCase();\n if (allowedExtentionsArray.indexOf(extention) < 0) {\n areValidFiles = false;\n }\n }\n });\n return areValidFiles;\n };\n}]);\nangular.module('sp.services').service('megaFilterService', ['$filter', 'generalHelperService', function ($filter, generalHelperService) {\n this.filterAll = function (filteredOrders, filterSelectionObject) {\n // First filter\n function filterByAssignmentType(originalOrders, filterSelectionObject) {\n var nothingFiltered = true;\n var filteredOrders = [];\n\n // FUTURE: This filtering does not preserve the original order, fix this!\n angular.forEach(filterSelectionObject.orderTypes, function (type) {\n if (type.selected) {\n var subset = $filter('filter')(originalOrders, {\n order_type: type.id\n }, true);\n filteredOrders = filteredOrders.concat(subset);\n nothingFiltered = false;\n }\n });\n if (nothingFiltered) {\n return filterByDeliveryStatus(originalOrders, filterSelectionObject);\n } else {\n return filterByDeliveryStatus(filteredOrders, filterSelectionObject);\n }\n }\n\n // Second filter\n function filterByDeliveryStatus(filteredOrders, filterSelectionObject) {\n var nothingFiltered = true;\n var nextFiltered = [];\n\n // FUTURE: This filtering does not preserve the original order, fix this!\n angular.forEach(filterSelectionObject.deliveryStatus, function (status) {\n if (status.selected) {\n var subset = $filter('filter')(filteredOrders, {\n task_status: status.id\n }, true);\n nextFiltered = nextFiltered.concat(subset);\n nothingFiltered = false;\n }\n });\n if (nothingFiltered) {\n return filterByDeliveryTime(filteredOrders, filterSelectionObject);\n } else {\n return filterByDeliveryTime(nextFiltered, filterSelectionObject);\n }\n }\n\n // Third filter\n function filterByDeliveryTime(filteredOrder, filterSelectionObject) {\n var nothingFiltered = true;\n var nextFiltered = [];\n\n // FUTURE: This filtering does not preserve the original order, fix this!\n if (!filterSelectionObject.deliveryTimeFrom && !filterSelectionObject.deliveryTimeTo) {\n nextFiltered = filteredOrder;\n } else if (filterSelectionObject.deliveryTimeFrom && filterSelectionObject.deliveryTimeTo) {\n var from = new Date(filterSelectionObject.deliveryTimeFrom);\n from.setHours(0);\n from.setMinutes(0);\n var to = new Date(filterSelectionObject.deliveryTimeTo);\n to.setHours(23);\n to.setMinutes(59);\n angular.forEach(filteredOrder, function (data) {\n var date = new Date(data.date_i + ' ' + data.time_i);\n if (date >= from && date <= to) {\n nextFiltered.push(data);\n }\n });\n } else if (!filterSelectionObject.deliveryTimeFrom && filterSelectionObject.deliveryTimeTo) {\n var to = new Date(filterSelectionObject.deliveryTimeTo);\n angular.forEach(filteredOrder, function (data) {\n var date = new Date(data.date_i + ' ' + data.time_i);\n if (date <= to) {\n nextFiltered.push(data);\n }\n });\n } else if (filterSelectionObject.deliveryTimeFrom && !filterSelectionObject.deliveryTimeTo) {\n var from = new Date(filterSelectionObject.deliveryTimeFrom);\n angular.forEach(filteredOrder, function (data) {\n var date = new Date(data.date_i + ' ' + data.time_i);\n if (date >= from) {\n nextFiltered.push(data);\n }\n });\n }\n return filterByProjects(nextFiltered, filterSelectionObject);\n }\n\n // Fourth filter\n function filterByProjects(filteredOrders, filterSelectionObject) {\n var nothingFiltered = true;\n var nextFiltered = [];\n\n // FUTURE: This filtering does not preserve the original order, fix this!\n angular.forEach(filterSelectionObject.projects, function (project) {\n if (project.selected) {\n var subset = $filter('filter')(filteredOrders, {\n project_id: project.id\n }, true);\n nextFiltered = nextFiltered.concat(subset);\n nothingFiltered = false;\n }\n });\n if (nothingFiltered) {\n return filterBySubProjects(filteredOrders, filterSelectionObject);\n } else {\n return filterBySubProjects(nextFiltered, filterSelectionObject);\n }\n }\n\n // Fifth filter\n function filterBySubProjects(filteredOrders, filterSelectionObject) {\n var nothingFiltered = true;\n var nextFiltered = [];\n\n // FUTURE: This filtering does not preserve the original order, fix this!\n angular.forEach(filterSelectionObject.sub_projects, function (sub_project_label) {\n if (sub_project_label.selected) {\n angular.forEach(filteredOrders, function (order) {\n angular.forEach(order.sub_projects, function (sub_project) {\n if (sub_project.sub_project_id === sub_project_label.id) {\n nextFiltered.push(order);\n }\n });\n });\n nothingFiltered = false;\n }\n });\n if (nothingFiltered) {\n return filterByVehicleDropLocations(filteredOrders, filterSelectionObject);\n } else {\n return filterByVehicleDropLocations(nextFiltered, filterSelectionObject);\n }\n }\n\n // sixth filter\n function filterByVehicleDropLocations(filteredOrders, filterSelectionObject) {\n var nothingFiltered = true;\n var nextFiltered = [];\n\n // FUTURE: This filtering does not preserve the original order, fix this!\n angular.forEach(filterSelectionObject.vehicle_drop_locations, function (drop_location) {\n if (drop_location.selected) {\n var subset = $filter('filter')(filteredOrders, {\n vehicle_drop_location_id: drop_location.id\n }, true);\n nextFiltered = nextFiltered.concat(subset);\n nothingFiltered = false;\n }\n });\n if (nothingFiltered) {\n return filterByCompanies(filteredOrders, filterSelectionObject);\n } else {\n return filterByCompanies(nextFiltered, filterSelectionObject);\n }\n }\n\n // seventh filter\n function filterByCompanies(filteredOrders, filterSelectionObject) {\n var nothingFiltered = true;\n var nextFiltered = [];\n\n // FUTURE: This filtering does not preserve the original order, fix this!\n angular.forEach(filterSelectionObject.companies, function (company) {\n if (company.selected) {\n var subset = $filter('filter')(filteredOrders, {\n work_order_company_id: company.id\n }, true);\n nextFiltered = nextFiltered.concat(subset);\n nothingFiltered = false;\n }\n });\n if (nothingFiltered) {\n return filterByWorkOrders(filteredOrders, filterSelectionObject);\n } else {\n return filterByWorkOrders(nextFiltered, filterSelectionObject);\n }\n }\n\n // eighth filter\n function filterByWorkOrders(filteredOrders, filterSelectionObject) {\n var nothingFiltered = true;\n var nextFiltered = [];\n\n // FUTURE: This filtering does not preserve the original order, fix this!\n angular.forEach(filterSelectionObject.work_orders, function (work_order) {\n if (work_order.selected) {\n var subset = $filter('filter')(filteredOrders, {\n work_order_id: work_order.id\n }, true);\n nextFiltered = nextFiltered.concat(subset);\n nothingFiltered = false;\n }\n });\n if (nothingFiltered) {\n return filterByPassCodeError(filteredOrders, filterSelectionObject);\n } else {\n return filterByPassCodeError(nextFiltered, filterSelectionObject);\n }\n }\n\n // nineth filter\n function filterByPassCodeError(filteredOrders, filterSelectionObject) {\n var nothingFiltered = true;\n var nextFiltered = [];\n // FUTURE: This filtering does not preserve the original order, fix this!\n angular.forEach(filterSelectionObject.error_codes, function (errorCode) {\n if (errorCode.selected) {\n var subset = $filter('filter')(filteredOrders, {\n well_sec_error_code: errorCode.code\n }, true);\n nextFiltered = nextFiltered.concat(subset);\n nothingFiltered = false;\n }\n });\n if (nothingFiltered) {\n return filteredOrders;\n } else {\n return nextFiltered;\n }\n }\n\n //FUTURE: Having filters calling eachother is not good architecture, there should ne one function calling each filter in order.\n return filterByAssignmentType(filteredOrders, filterSelectionObject);\n };\n\n // Functions to extract the selectable filter options in the GUI.\n this.extractUniqueProjects = function (extractToArray, extractFromArray) {\n angular.forEach(extractFromArray, function (data) {\n if (typeof data['project_id'] !== 'undefined' && data['project_name'] !== '' && generalHelperService.isUnique(extractToArray, 'id', data['project_id'])) {\n extractToArray.push({\n name: data.project_name,\n id: data.project_id\n });\n }\n });\n };\n this.extractUniqueSubProjects = function (extractToArray, extractFromArray) {\n angular.forEach(extractFromArray, function (data) {\n angular.forEach(data.sub_projects, function (data) {\n if (typeof data['sub_project_id'] !== 'undefined' && data['sub_project_name'] !== '' && generalHelperService.isUnique(extractToArray, 'id', data['sub_project_id'])) {\n extractToArray.push({\n name: data.sub_project_name,\n id: data.sub_project_id\n });\n }\n });\n });\n };\n this.extractUniqueVehicleDropLocations = function (extractToArray, extractFromArray) {\n angular.forEach(extractFromArray, function (data) {\n if (typeof data['vehicle_drop_location_id'] !== 'undefined' && data['vehicle_drop_location_name'] !== '' && generalHelperService.isUnique(extractToArray, 'id', data['vehicle_drop_location_id'])) {\n extractToArray.push({\n name: data.vehicle_drop_location_name,\n id: data.vehicle_drop_location_id\n });\n }\n });\n };\n this.extractUniqueCompanies = function (extractToArray, extractFromArray) {\n angular.forEach(extractFromArray, function (data) {\n if (typeof data['work_order_company_id'] !== 'undefined' && data['work_order_company_name'] !== '' && generalHelperService.isUnique(extractToArray, 'id', data['work_order_company_id'])) {\n extractToArray.push({\n name: data.work_order_company_name,\n id: data.work_order_company_id\n });\n }\n });\n };\n this.extractUniqueWorkOrders = function (extractToArray, extractFromArray) {\n angular.forEach(extractFromArray, function (data) {\n if (typeof data['work_order_id'] !== 'undefined' && data['work_order_name'] !== '' && generalHelperService.isUnique(extractToArray, 'id', data['work_order_id'])) {\n var label = '';\n if (data.erp_system_reference) label = data.work_order_name + '(' + data.erp_system_reference + ')';else label = data.work_order_name;\n extractToArray.push({\n name: label,\n id: data.work_order_id\n });\n }\n });\n };\n this.extractUniqueErrorCodes = function (extractToArray, extractFromArray) {\n angular.forEach(extractFromArray, function (data) {\n if (data['well_sec_error_code'] && data['well_sec_error_code'] !== '' && generalHelperService.isUnique(extractToArray, 'code', data['well_sec_error_code'])) {\n extractToArray.push({\n code: data['well_sec_error_code']\n });\n }\n });\n };\n this.getEmptyFilter = function () {\n return {\n orderTypes: [],\n taskStatuses: [],\n projects: [],\n subProjects: [],\n vehicleDropLocations: [],\n resourceLocations: [],\n companies: [],\n workOrders: [],\n deliveryTimeFrom: null,\n deliveryTimeTo: null\n };\n };\n this.copyFilter = function (filter) {\n function flattenDate(date) {\n return new Date(moment.utc(date).format('YYYY-MM-DD'));\n }\n var copy = {};\n copy.orderTypes = filter.orderTypes ? filter.orderTypes.slice(0) : [];\n copy.taskStatuses = filter.taskStatuses ? filter.taskStatuses.slice(0) : [];\n copy.projects = filter.projects ? filter.projects.slice(0) : [];\n copy.subProjects = filter.subProjects ? filter.subProjects.slice(0) : [];\n copy.vehicleDropLocations = filter.projects ? filter.vehicleDropLocations.slice(0) : [];\n copy.resourceLocations = filter.projects ? filter.resourceLocations.slice(0) : [];\n copy.companies = filter.companies ? filter.companies.slice(0) : [];\n copy.workOrders = filter.workOrders ? filter.workOrders.slice(0) : [];\n copy.deliveryTimeFrom = filter.deliveryTimeFrom ? flattenDate(filter.deliveryTimeFrom) : null;\n copy.deliveryTimeTo = filter.deliveryTimeTo ? flattenDate(filter.deliveryTimeTo) : null;\n return copy;\n };\n this.isEmptyFilter = function (filter) {\n return (!filter.orderTypes || filter.orderTypes.length === 0) && (!filter.taskStatuses || filter.taskStatuses.length === 0) && (!filter.projects || filter.projects.length === 0) && (!filter.subProjects || filter.subProjects.length === 0) && (!filter.vehicleDropLocations || filter.vehicleDropLocations.length === 0) && (!filter.resourceLocations || filter.resourceLocations.length === 0) && (!filter.companies || filter.companies.length === 0) && (!filter.workOrders || filter.workOrders.length === 0) && (!filter.deliveryTimeFrom || filter.deliveryTimeFrom == '') && (!filter.deliveryTimeTo || filter.deliveryTimeTo == '');\n };\n this.includeOrExcludeOrderType = function (filter, orderType, shallBeIncluded) {\n if (!filter.orderTypes) {\n filter.orderTypes = [];\n }\n var index = filter.orderTypes.indexOf(orderType);\n var isIncluded = index !== -1;\n if (shallBeIncluded) {\n if (!isIncluded) {\n filter.orderTypes.push(orderType);\n }\n } else {\n if (isIncluded) {\n filter.orderTypes.splice(index, 1);\n }\n }\n };\n}]);\n'use strict';\n\nservices.service('roleService', ['$localStorage', function ($localStorage) {\n this.isInternal = function () {\n return $localStorage.user.role_id === RoleEnum.ADMINISTRATOR || $localStorage.user.role_id === RoleEnum.SERVICENTER || $localStorage.user.role_id === RoleEnum.PROJECT_OWNER || $localStorage.user.role_id === RoleEnum.WAREHOUSE_PLANNER || $localStorage.user.role_id === RoleEnum.WAREHOUSE_OPERATOR;\n };\n this.isAdmin = function () {\n return $localStorage.user.role_id === RoleEnum.ADMINISTRATOR;\n };\n this.isServicenter = function () {\n return $localStorage.user.role_id === RoleEnum.SERVICENTER;\n };\n this.isProjectOwner = function () {\n return $localStorage.user.role_id === RoleEnum.PROJECT_OWNER;\n };\n this.isWarehousePlanner = function () {\n return $localStorage.user.role_id === RoleEnum.WAREHOUSE_PLANNER;\n };\n this.isWarehouseOperator = function () {\n return $localStorage.user.role_id === RoleEnum.WAREHOUSE_OPERATOR;\n };\n this.isCustomer = function () {\n return $localStorage.user.role_id === RoleEnum.CUSTOMER;\n };\n this.myRoleId = function () {\n return $localStorage.user.role_id;\n };\n}]);\n'use strict';\n\nservices.service('taskStatusService', function () {\n this.isConfirmedOrLater = function (taskStatusId) {\n if (taskStatusId === TaskStatusTypeEnum.CONFIRMED || taskStatusId === TaskStatusTypeEnum.PICKED || taskStatusId === TaskStatusTypeEnum.ARRIVED || taskStatusId === TaskStatusTypeEnum.ASSIGNED_TRANSPORT || taskStatusId === TaskStatusTypeEnum.ASSIGNED_ROUTE || taskStatusId === TaskStatusTypeEnum.DELIVERED || taskStatusId === TaskStatusTypeEnum.STORED || taskStatusId === TaskStatusTypeEnum.COMPLETED) {\n return true;\n } else return false;\n };\n this.isConfirmed = function (taskStatusId) {\n return taskStatusId === TaskStatusTypeEnum.CONFIRMED;\n };\n this.isPicked = function (taskStatusId) {\n return taskStatusId === TaskStatusTypeEnum.PICKED;\n };\n this.isArrived = function (taskStatusId) {\n return taskStatusId === TaskStatusTypeEnum.ARRIVED;\n };\n this.isAssignedToTransport = function (taskStatusId) {\n return taskStatusId === TaskStatusTypeEnum.ASSIGNED_TRANSPORT;\n };\n this.isAssignedToRoute = function (taskStatusId) {\n return taskStatusId === TaskStatusTypeEnum.ASSIGNED_ROUTE;\n };\n this.isDelivered = function (taskStatusId) {\n return taskStatusId === TaskStatusTypeEnum.DELIVERED;\n };\n this.isStored = function (taskStatusId) {\n return taskStatusId === TaskStatusTypeEnum.STORED;\n };\n this.isCompleted = function (taskStatusId) {\n return taskStatusId === TaskStatusTypeEnum.COMPLETED;\n };\n this.isNotified = function (taskStatusId) {\n return taskStatusId === TaskStatusTypeEnum.NOTIFIED;\n };\n this.isCancelled = function (taskStatusId) {\n return taskStatusId === TaskStatusTypeEnum.CANCELLED;\n };\n});\n'use strict';\n\nfunction OrderCalendarDayController($scope, $rootScope, $translate) {\n var ctrl = this;\n ctrl.templateScope = {\n isWeekView: false,\n showHours: true\n };\n var getCalendarTitle = function getCalendarTitle() {\n var currentMoment = moment(ctrl.viewDate);\n var currentMonth = $translate.instant(currentMoment.format('MMMM').toUpperCase());\n var currentDay = $translate.instant(currentMoment.format('ddd').toUpperCase());\n return [currentDay, currentMoment.format('DD'), currentMonth, currentMoment.format('YYYY')].join(' ');\n };\n\n // Events and bindings\n ctrl.$doCheck = function () {\n ctrl.title = getCalendarTitle();\n\n //FUTURE: Dynamically update day event width to fit whole calendar?\n };\n\n ctrl.toggleLeft = function () {\n date = ctrl.viewDate;\n date.setDate(date.getDate() - 1);\n $scope.$broadcast('calendar.refreshView');\n $rootScope.$broadcast('updateOrders');\n };\n ctrl.toggleRight = function () {\n date = ctrl.viewDate;\n date.setDate(date.getDate() + 1);\n $scope.$broadcast('calendar.refreshView');\n $rootScope.$broadcast('updateOrders');\n };\n $scope.$on('updateCalendar', function (event) {\n $scope.$broadcast('calendar.refreshView');\n });\n}\n;\ncomponents.component('orderCalendarDay', {\n templateUrl: 'app/components/orders/order_calendar_day.html',\n controller: ['$scope', '$rootScope', '$translate', OrderCalendarDayController],\n bindings: {\n events: '=',\n viewDate: '=',\n onEventClick: '='\n }\n});\n'use strict';\n\nfunction OrderCalendarWeekController($scope, $rootScope, $translate) {\n var ctrl = this;\n ctrl.dayCalendarObjects = [];\n ctrl.dummyArray = []; // Empty event array for hour list column\n\n ctrl.templateScope = {\n isWeekView: true,\n showHours: false\n };\n ctrl.templateScopeOnFirstColumn = {\n isWeekView: true,\n showHours: true\n };\n var createHourListCalendarObject = function createHourListCalendarObject() {\n return {\n titleDay: 'TIME',\n titleNumber: '',\n date: moment()\n };\n };\n ctrl.toggleLeft = function () {\n date = ctrl.viewDate;\n date.setDate(date.getDate() - 7);\n ctrl.updateDayCalendarObjects();\n $scope.$broadcast('updateCalendar');\n $rootScope.$broadcast('updateOrders');\n };\n ctrl.toggleRight = function () {\n date = ctrl.viewDate;\n date.setDate(date.getDate() + 7);\n ctrl.updateDayCalendarObjects();\n $scope.$broadcast('updateCalendar');\n $rootScope.$broadcast('updateOrders');\n };\n ctrl.updateDayCalendarObjects = function () {\n ctrl.dayCalendarObjects = [];\n ctrl.dayCalendarObjects.push(createHourListCalendarObject());\n var weekday = moment(ctrl.viewDate);\n while (weekday.format('ddd') !== 'Mon') {\n weekday.subtract(1, 'days'); // Get nearest Monday\n }\n\n for (var i = 0; i < 7; i++) {\n var date = weekday.format('YYYY-MM-DD');\n var titleDay = weekday.format('ddd').toUpperCase();\n var titleNumber = weekday.format('D');\n var newDayCalendarObject = {\n date: date,\n titleDay: titleDay,\n titleNumber: titleNumber\n };\n ctrl.dayCalendarObjects.push(newDayCalendarObject);\n weekday.add(1, 'days');\n }\n ;\n };\n var getCalendarTitle = function getCalendarTitle() {\n var currentMoment = moment(ctrl.viewDate);\n return $translate.instant('WEEK') + ' ' + currentMoment.format('WW');\n };\n\n // Events and bindings\n ctrl.$doCheck = function () {\n ctrl.title = getCalendarTitle();\n //FUTURE: Dynamically update day event width to fit whole calendar?\n };\n\n ctrl.$onInit = function () {\n ctrl.updateDayCalendarObjects();\n };\n $scope.$on('updateCalendar', function (event) {\n ctrl.updateDayCalendarObjects();\n $scope.$broadcast('calendar.refreshView');\n });\n}\n;\ncomponents.component('orderCalendarWeek', {\n templateUrl: 'app/components/orders/order_calendar_week.html',\n controller: ['$scope', '$rootScope', '$translate', OrderCalendarWeekController],\n bindings: {\n events: '=',\n viewDate: '=',\n onEventClick: '='\n }\n});\n'use strict';\n\n/**This component represents a Serviplan table. To use, provide the necessary bindings\r\n * in an element. Content placed between the tags will be transcluded into the tool area\r\n * above the table.\r\n*/\nfunction TableController($filter, keyCodes) {\n var controller = this;\n controller.$onInit = function () {\n // Initialize default values\n if (controller.isSelectionEnabled === undefined) controller.isSelectionEnabled = true;\n controller.totalItems = controller.items ? controller.items.length : 0;\n controller.paginationRange = controller.paginationRange || 5;\n controller.itemRange = controller.itemRange || 15;\n controller.itemRangeBottom = 0;\n controller.itemRangeTop = controller.itemRange - 1;\n controller.currentPage = 1;\n controller.isCheckAllCheckboxChecked = false;\n controller.searchFieldString = '';\n controller.filterString = '';\n controller.keyCode = '';\n controller.lastSortCol = controller.tableHeaderItems[0] ? controller.tableHeaderItems[0].propertyName : \"\"; // Default to sorting by first property\n controller.sortCol = controller.lastSortCol;\n controller.isSortReversed = false; // set the default sort order\n };\n\n controller.getPropertyFromItem = function (item, propertyName) {\n if (!item.hasOwnProperty(propertyName)) {\n return \"\";\n }\n return item[propertyName] ? item[propertyName].toString() : \"\";\n };\n controller.reverseSorting = function () {\n if (controller.lastSortCol === controller.sortCol && !controller.isSortReversed) {\n controller.isSortReversed = true;\n } else {\n controller.lastSortCol = controller.sortCol;\n controller.isSortReversed = false;\n }\n };\n controller.sortingArrowOnClick = function (tableHeaderName) {\n controller.sortCol = tableHeaderName;\n controller.reverseSorting();\n };\n controller.checkAllCheckboxOnClick = function () {\n if (controller.isCheckAllCheckboxChecked) {\n controller.selectAllFiltered();\n } else {\n controller.deselectAll();\n }\n };\n controller.selectAllFiltered = function () {\n var filteredItems = $filter('filter')(controller.items, controller.filterString);\n angular.forEach(filteredItems, function (item) {\n item.selected = true;\n });\n controller.updateSelectedArray();\n };\n controller.deselectAll = function () {\n angular.forEach(controller.items, function (item) {\n item.selected = false;\n });\n controller.updateSelectedArray();\n };\n controller.updateSelectedArray = function () {\n controller.selectedItems = [];\n controller.allSelectedItems = [];\n angular.forEach(controller.items, function (item) {\n if (item.selected) {\n controller.allSelectedItems.push(item);\n }\n });\n controller.selectedItems = $filter('filter')(controller.allSelectedItems, controller.filterString);\n };\n controller.updateTableRange = function () {\n controller.itemRangeBottom = (controller.currentPage - 1) * controller.itemRange;\n };\n controller.updateTableRange();\n controller.updateVisibleItems = function () {\n controller.selectedItems = $filter('filter')(controller.allSelectedItems, controller.filterString);\n var filteredItems = controller.items;\n if (controller.filterString) {\n filteredItems = $filter('filter')(controller.items, controller.filterString);\n }\n controller.totalItems = filteredItems.length;\n };\n controller.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n // Enter key pressed\n controller.filterString = controller.searchFieldString;\n controller.updateVisibleItems();\n }\n };\n\n // Event handlers and callbacks\n controller.$onChanges = function () {\n controller.updateSelectedArray();\n controller.updateVisibleItems();\n };\n}\n\n// Name component \"spTable\" to avoid clash with standard table element\ncomponents.component('spTable', {\n templateUrl: 'app/shared/sp_table.html',\n transclude: {\n 'tools': '?spTableTools'\n },\n bindings: {\n items: '<',\n selectedItems: '=?',\n tableHeaderItems: '<',\n isSelectionEnabled: '<',\n itemOnClick: '<',\n paginationRange: '<',\n itemRange: '<'\n },\n controller: ['$filter', 'keyCodes', TableController]\n});\n'use strict';\n\ncontrollers.controller('AdminController', ['$uibModal', '$scope', '$rootScope', '$filter', '$translate', 'userFactory', 'subProjectFactory', 'generalHelperService', 'errorService', 'roleService', '$localStorage', 'mainProjectFactory', 'projectFactory', function ($uibModal, $scope, $rootScope, $filter, $translate, userFactory, subProjectFactory, generalHelperService, errorService, roleService, $localStorage, mainProjectFactory, projectFactory) {\n $scope.identifyRoles = function () {\n $scope.isAdmin = roleService.isAdmin();\n $scope.isServicenter = roleService.isServicenter();\n $scope.isProjectOwner = roleService.isProjectOwner();\n $scope.isWarehousePlanner = roleService.isWarehousePlanner();\n $scope.isWarehouseOperator = roleService.isWarehouseOperator();\n $scope.isCustomer = roleService.isCustomer();\n $scope.isInternal = roleService.isInternal();\n };\n $scope.identifyRoles();\n function loadUserData() {\n if (userFactory.isUserDataSet()) {\n $scope.user = {\n user_id: $localStorage.user.user_id,\n user_login: $localStorage.user.login,\n user_type: $scope.isInternal ? 'Intern' : 'Extern',\n user_email: $localStorage.user.email,\n user_name: $localStorage.user.user_name,\n user_phone: $localStorage.user.phone_number,\n user_role_name: $localStorage.user.user_role_name.toUpperCase(),\n user_company_name: $scope.isInternal ? '' : $localStorage.user.companies.length > 0 ? $localStorage.user.companies[0].company_name : 'Okänd'\n };\n }\n }\n ;\n loadUserData();\n function createMainProjectsTree(mainProjects, projects, subProjects) {\n var list = {};\n angular.forEach(mainProjects, function (mainProject) {\n var mpKey = mainProject.main_project_id;\n list[mpKey] = {\n mainProject: mainProject,\n projects: {}\n };\n angular.forEach(projects, function (project) {\n if (mpKey == project.main_project_id) {\n var pKey = project.project_id;\n list[mpKey].projects[pKey] = {\n project: project,\n subProjects: {}\n };\n angular.forEach(subProjects, function (subProject) {\n var spKey = subProject.sub_project_id;\n if (pKey == subProject.project_id) {\n list[mpKey].projects[pKey].subProjects[spKey] = subProject;\n }\n });\n }\n });\n });\n return list;\n }\n function loadAllProjectTypes() {\n if (!$rootScope.main_projects || !$rootScope.projects || $rootScope.sub_projects) {\n userFactory.getMe().then(function (response) {\n var data = response.data,\n main_projects = mainProjectFactory.repackageDTOArray(data.MainProjects),\n projects = projectFactory.repackageDTOArray(data.Projects),\n sub_projects = subProjectFactory.repackageDTOArray(data.SubProjects);\n $scope.mainProjectsTree = createMainProjectsTree(main_projects, projects, sub_projects);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n }\n loadAllProjectTypes();\n var animationsEnabled = true;\n $scope.createSubProject = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/sub_project/sub_project_form.html',\n controller: 'SubProjectInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create_sub_project';\n },\n id: function id() {\n return -1;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n $scope.createWorkOrder = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/work_order/work_order_form.html',\n controller: 'WorkOrderInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create_work_order';\n },\n id: function id() {\n return -1;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n $scope.objectLength = function (object) {\n if (object) {\n return Object.keys(object).length;\n }\n return 0;\n };\n $scope.$on('updatedUserData', function (event) {\n loadUserData();\n });\n}]);\n'use strict';\n\ncontrollers.controller('DeviationCodeController', ['$uibModal', '$scope', '$rootScope', '$filter', 'deviationCodeFactory', 'errorService', 'roleService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, deviationCodeFactory, errorService, roleService, keyCodes) {\n $scope.isAdmin = roleService.isAdmin();\n $scope.innerRange = 5;\n $scope.currentPage = 1;\n $scope.itemRangeBottom = 0;\n $scope.itemRangeTop = 14;\n $scope.itemRange = 15;\n $scope.selectedAny = false;\n $scope.selectedAll = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.hasMixedSelection = false;\n $scope.showInactive = false;\n $scope.searchString = '';\n $scope.keyCode = '';\n $scope.lastSortCol = 'name';\n $scope.sortCol = 'name';\n $scope.sortReverse = false;\n $scope.sortReverseFn = function () {\n if ($scope.lastSortCol === $scope.sortCol && !$scope.sortReverse) {\n $scope.sortReverse = true;\n } else {\n $scope.lastSortCol = $scope.sortCol;\n $scope.sortReverse = false;\n }\n };\n var selected = [];\n $rootScope.reloadTable = function () {\n $scope.deviation_codes = [];\n deviationCodeFactory.getDeviationCodes().then(function (response) {\n var data = response.data;\n $scope.deviation_codes = deviationCodeFactory.repackageDTOArray(data);\n $scope.totalItems = $scope.deviation_codes.length;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $rootScope.reloadTable();\n $scope.checkAll = function () {\n if (!$scope.selectedAll) {\n $scope.unCheckAll();\n return;\n }\n var filtered = getVisibleItems($scope.deviation_codes);\n angular.forEach(filtered, function (p) {\n p.selected = true;\n });\n $scope.updateSelection();\n };\n $scope.unCheckAll = function () {\n angular.forEach($scope.deviation_codes, function (p) {\n p.selected = $scope.selectedAll;\n if (p.selected) {\n selected.push(p);\n }\n });\n $scope.updateSelection();\n };\n $scope.updateSelection = function () {\n var oneActiveSelected = false;\n var oneInactiveSelected = false;\n var filtered = getVisibleItems($scope.deviation_codes);\n $scope.selectedAny = false;\n selected = [];\n angular.forEach(filtered, function (p) {\n if (!$scope.selectedAny && p.selected) {\n $scope.selectedAny = true;\n }\n if (p.selected) {\n selected.push(p);\n }\n if (!oneActiveSelected && p.is_active && p.selected) {\n oneActiveSelected = true;\n }\n if (!oneInactiveSelected && !p.is_active && p.selected) {\n oneInactiveSelected = true;\n }\n });\n if (!$scope.selectedAny) {\n $scope.selectedAll = false;\n }\n\n // Mixed selection\n if (oneActiveSelected && oneInactiveSelected) {\n $scope.hasMixedSelection = true;\n $scope.hasActiveSelection = true;\n $scope.hasInactiveSelection = true;\n } else {\n $scope.hasMixedSelection = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n }\n\n //Active selction\n if (oneActiveSelected && !oneInactiveSelected) {\n $scope.hasActiveSelection = true;\n } else $scope.hasActiveSelection = false;\n\n //Inactive selction\n if (!oneActiveSelected && oneInactiveSelected) {\n $scope.hasInactiveSelection = true;\n } else $scope.hasInactiveSelection = false;\n };\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENNTER) {\n $scope.searchString = $scope.pendingSearchString;\n $scope.updateFullTableRange();\n }\n };\n $scope.updateFullTableRange = function () {\n $scope.updateSelection();\n var filtered = getVisibleItems($scope.deviation_codes);\n $scope.totalItems = filtered.length;\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.currentPage - 1) * $scope.itemRange;\n };\n function getVisibleItems(array) {\n var filtered = array;\n if (!$scope.showInactive) {\n filtered = $filter('inactive')(filtered, $scope.showInactive);\n }\n if ($scope.searchString) {\n filtered = $filter('filter')(filtered, $scope.searchString);\n }\n return filtered;\n }\n\n // --- MODAL - CREATE ---\n var animationsEnabled = true;\n $scope.createDeviationCode = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/deviation_code/deviation_code_form.html',\n controller: 'DeviationCodeInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create_deviation_code';\n },\n id: function id() {\n return -1;\n }\n }\n });\n modalInstance.result.then(function (results) {\n console.log(\"Results from modal exit: \\n\" + results);\n });\n };\n $scope.activateDeviationCodes = function (isActive) {\n selected.forEach(function (data) {\n if (isActive) {\n deviationCodeFactory.activateDeviationCode(data.deviation_code_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n deviationCodeFactory.deactivateDeviationCode(data.deviation_code_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n });\n };\n\n // --- MODAL - VIEW GATE ---\n $scope.viewDeviationCode = function (_id) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/deviation_code/deviation_code_form.html',\n controller: 'DeviationCodeInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view_deviation_code';\n },\n id: function id() {\n return _id;\n }\n }\n });\n modalInstance.result.then(function (results) {\n console.log(\"Results from modal exit: \\n\" + results);\n });\n };\n $scope.$on('deviationCodeRepeatFinished', function (deviationCodeRepeatFinishedEvent) {\n $scope.updateFullTableRange();\n });\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('DeviationCodeInstanceController', ['$uibModalInstance', 'form_type', 'id', '$scope', '$rootScope', 'deviationCodeFactory', function ($uibModalInstance, form_type, id, $scope, $rootScope, deviationCodeFactory) {\n $scope.validated = false;\n $scope.form_type = form_type;\n $scope.deviation_code_name = '';\n if (form_type === 'view_deviation_code') {\n deviationCodeFactory.getDeviationCode(id).then(function (response) {\n var data = response.data;\n $scope.deviation_code_id = id;\n $scope.deviation_code_name = data.Name;\n $scope.is_active = data.IsActive;\n }, function (error) {\n errorService.handleError(error);\n });\n }\n\n // Finalizing or exiting form\n $scope.create = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = {\n \"Name\": $scope.deviation_code_name,\n \"IsActive\": true\n };\n deviationCodeFactory.createDeviationCode(DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(\"Deviation code created\"); // Pass in returned item here.\n };\n\n $scope.activation = function (isActive) {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n if (isActive) {\n deviationCodeFactory.activateDeviationCode($scope.deviation_code_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n deviationCodeFactory.deactivateDeviationCode($scope.deviation_code_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n var results = '';\n $uibModalInstance.close(results); // Pass in returned item here.\n };\n\n $scope.update = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = {\n \"DeviationCodeId\": $scope.deviation_code_id,\n \"Name\": $scope.deviation_code_name,\n \"IsActive\": $scope.is_active\n };\n deviationCodeFactory.updateDeviationCode(DTO.DeviationCodeId, DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(); // Pass in returned item here.\n };\n\n $scope.delete = function () {\n deviationCodeFactory.deleteDeviationCode($scope.deviation_code_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(''); // Pass in returned item here.\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n if (input === '') {\n return false;\n } else if (typeof input === 'undefined') {\n return false;\n } else if (input === null) {\n return false;\n } else return true;\n };\n $scope.validateForm = function () {\n $scope.formValid = $scope.deviation_code_name !== '' && typeof $scope.deviation_code_name !== 'undefined';\n return $scope.formValid;\n };\n}]);\n'use strict';\n\ncontrollers.controller('InboxController', ['$uibModal', '$scope', '$rootScope', '$filter', '$translate', 'notificationsFactory', 'errorService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, $translate, notificationsFactory, errorService, keyCodes) {\n $scope.innerRange = 5;\n $scope.currentPage = 1;\n $scope.itemRangeBottom = 0;\n $scope.itemRangeTop = 14;\n $scope.itemRange = 15;\n $scope.selectedAny = false;\n $scope.selectedAll = false;\n $scope.hasSelection = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.showInactive = false;\n $scope.searchString = '';\n $scope.keyCode = '';\n $scope.lastSortCol = 'notification_contact_name';\n $scope.sortCol = 'notification_contact_name';\n $scope.sortReverse = false;\n $scope.sortReverseFn = function () {\n if ($scope.lastSortCol === $scope.sortCol && !$scope.sortReverse) {\n $scope.sortReverse = true;\n } else {\n $scope.lastSortCol = $scope.sortCol;\n $scope.sortReverse = false;\n }\n };\n $scope.selectedNotifications = [];\n $rootScope.reloadTable = function () {\n $scope.notifications = [];\n notificationsFactory.getNotifications().then(function (response) {\n response.data.forEach(notificationsData);\n $scope.totalItems = $scope.notifications.length;\n $scope.notifications = $filter('orderBy')($scope.notifications, 'notification_date', true);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $rootScope.reloadTable();\n function notificationsData(data, index) {\n $scope.selectedAll = false;\n $scope.selectedAny = false;\n var tempNotification = {\n notification_id: data.NotificationId,\n notification_date: data.Date,\n notification_contact_name: data.ContactName,\n notification_phone_number: data.PhoneNumber,\n notification_email: data.To,\n notification_type_name: data.NotificationTemplateName,\n notification_message: (data.Body != undefined ? data.Body : '') + (data.Message != undefined ? data.Message : ''),\n notification_delivery_number: data.OrderNumber,\n // Leveransnummer\n notification_work_order: data.WorkOrderName,\n // Arbetsorder\n notification_isEmail: data.NotificationMedium === NotificationMediumEnum.EMAIL_NOTIFICATION,\n notification_isSMS: data.NotificationMedium === NotificationMediumEnum.SMS_NOTIFICATION\n };\n if (isUnique($scope.notifications, 'notification_id', data.NotificationId)) {\n $scope.notifications.push(tempNotification);\n }\n }\n function isUnique(array, idKey, id) {\n var unique = true;\n array.forEach(function (entry, index) {\n if (entry[idKey] === id) {\n unique = false;\n }\n });\n return unique;\n }\n $scope.displayDateSeparator = function (order1, order2) {\n if (order2 === null || typeof order2 === 'undefined') {\n return true;\n }\n return order1.notification_date !== order2.notification_date;\n };\n $scope.displayDate = function (date) {\n var months = loadMonthsFromLanguage();\n var today = new Date().toISOString().split('T')[0];\n var pDate = new Date(date);\n return (today === date ? $translate.instant('TODAY') + ' ' : '') + pDate.getDate() + ' ' + months[pDate.getMonth()];\n };\n $scope.isToday = function (date) {\n var today = new Date().toISOString().split('T')[0];\n return date == today;\n };\n $scope.isBeforeToday = function (date) {\n var today = new Date().toISOString().split('T')[0];\n return date < today;\n };\n function loadMonthsFromLanguage() {\n var translations = $translate.instant(['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']);\n var months = [];\n months.push(translations['JAN']);\n months.push(translations['FEB']);\n months.push(translations['MAR']);\n months.push(translations['APR']);\n months.push(translations['MAY']);\n months.push(translations['JUN']);\n months.push(translations['JUL']);\n months.push(translations['AUG']);\n months.push(translations['SEP']);\n months.push(translations['OCT']);\n months.push(translations['NOV']);\n months.push(translations['DEC']);\n return months;\n }\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.searchString = $scope.pendingSearchString;\n $scope.updateFullTableRange('filter', $scope.notifications, $scope.searchString);\n }\n };\n $scope.updateFullTableRange = function (filter, array, param) {\n var filtered = $filter(filter)(array, param);\n $scope.totalItems = filtered.length;\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.currentPage - 1) * $scope.itemRange;\n };\n $scope.$on('notificationRepeatFinished', function (notificationRepeatFinishedEvent) {\n $scope.updateFullTableRange('filter', $scope.notifications);\n });\n}]);\n'use strict';\n\nangular.module('sp.controllers').controller('OrderController', ['$scope', '$rootScope', '$filter', 'orderFactory', '$translate', '$localStorage', '$location', 'roleService', 'taskStatusService', 'ngToast', 'generalHelperService', 'megaFilterService', 'keyCodes', 'calendarConfig', '$templateRequest', 'megaFilterModalService', '$q', 'showingArchive', 'orderFormModalService', 'warehouseBalanceModalService', function ($scope, $rootScope, $filter, orderFactory, $translate, $localStorage, $location, roleService, taskStatusService, ngToast, generalHelperService, megaFilterService, keyCodes, calendarConfig, $templateRequest, megaFilterModalService, $q, showingArchive, orderFormModalService, warehouseBalanceModalService) {\n if ($localStorage.user && $localStorage.user.session_main_project) {\n setMainProjectState();\n }\n $scope.OrderTypeEnum = OrderTypeEnum; // Makes OrderTypeEnum available in html\n\n $scope.calendarEvents = [];\n $scope.isFilterActive = function () {\n return !megaFilterService.isEmptyFilter($scope.filter);\n };\n // Load templates for calendar\n $templateRequest('app/components/orders/order_calendar_day_template.html');\n $templateRequest('app/components/orders/order_calendar_hourlist_template.html');\n\n // Global date reference\n $scope.viewDateRef = new Date();\n $scope.loadedMonth = null;\n\n // Pagination\n\n $scope.paginationConfig = {\n currentPage: 1,\n innerRange: 5,\n pageSize: 15,\n totalItems: 0\n };\n $scope.pagination = {\n from: null,\n to: null,\n skip: 0,\n take: $scope.paginationConfig.pageSize\n };\n $scope.filter = megaFilterService.getEmptyFilter();\n $scope.selectedAny = false;\n $scope.selectedAll = false;\n $scope.hasMixedSelection = false;\n $scope.searchString = '';\n $scope.keyCode = '';\n $scope.showingArchive = showingArchive;\n $scope.statusChangeAllowed = false;\n $scope.miniListOrders = [];\n function updateDeliveryDateFilter() {\n if ($scope.showingArchive) {\n if (!$scope.filter.deliveryTimeTo) {\n var endOfToday = new Date();\n endOfToday.setHours(23, 59, 59, 999);\n $scope.filter.deliveryTimeTo = endOfToday;\n }\n if (!$scope.filter.deliveryTimeFrom) {\n var today = new Date();\n var oneMonthAgo = new Date();\n oneMonthAgo.setHours(0, 0, 0, 0);\n oneMonthAgo.setMonth(oneMonthAgo.getMonth() - 1);\n if (oneMonthAgo.getMonth() === today.getMonth()) {\n oneMonthAgo.setDate(0);\n }\n $scope.filter.deliveryTimeFrom = oneMonthAgo;\n }\n } else {\n $scope.filter.deliveryTimeTo = null;\n $scope.filter.deliveryTimeFrom = null;\n }\n }\n updateDeliveryDateFilter();\n function labelOld(orders) {\n var today = new Date(new Date().toLocaleDateString());\n orders.forEach(function (order, index) {\n var orderDate = new Date(order.date_i);\n if (today > orderDate) {\n order.old = true;\n } else {\n order.old = false;\n }\n });\n return orders;\n }\n function updateMiniListOrders() {\n $scope.miniListOrders.length = 0;\n if ($scope.currentOrdersPeriodType === 'LIST') {\n angular.forEach($scope.orders, function (order) {\n $scope.miniListOrders.push(order);\n });\n } else {\n var from = moment($scope.viewDateRef).startOf($scope.currentOrdersPeriodType).toDate();\n var to = moment($scope.viewDateRef).endOf($scope.currentOrdersPeriodType).toDate();\n angular.forEach($scope.orders, function (order) {\n var orderDate = new Date(order.date_i);\n if (orderDate >= from && orderDate <= to) {\n $scope.miniListOrders.push(order);\n }\n });\n }\n }\n function setMainProjectState() {\n $scope.mainProjectId = $localStorage.user.session_main_project.main_project_id;\n $scope.canCreateDirectDeliveryOrder = $localStorage.user.session_main_project.is_direct_delivery_function_enabled;\n $scope.canCreateTransshipmentOrder = $localStorage.user.session_main_project.is_transshipment_function_enabled;\n $scope.canCreateStoringOrder = $localStorage.user.session_main_project.is_storing_function_enabled;\n $scope.canCreateMaterialOrder = $localStorage.user.session_main_project.is_material_order_function_enabled;\n $scope.canCreateResourceBookingOrder = $localStorage.user.session_main_project.is_resource_booking_function_enabled;\n $scope.canOpenWarehouseBalance = $localStorage.user.session_main_project.is_warehouse_balance_function_enabled;\n }\n ;\n function loadOrders() {\n if (!$scope.mainProjectId) {\n return $q.reject('User data not initiated yet');\n }\n var loadTask;\n if ($scope.showingArchive) {\n if ($scope.currentOrdersType === 'PACKAGES') {\n loadTask = orderFactory.getArchivedWithPackages($scope.mainProjectId, $scope.filter, $scope.pagination, $scope.searchString);\n } else if ($scope.currentOrdersType === 'MY_ORDERS') {\n loadTask = orderFactory.getArchived($scope.mainProjectId, $scope.filter, $scope.pagination, $scope.searchString);\n }\n } else {\n if ($scope.currentOrdersType === 'PACKAGES') {\n loadTask = orderFactory.getOrdersWithPackages($scope.mainProjectId, $scope.filter, $scope.pagination, $scope.searchString);\n } else if ($scope.currentOrdersType === 'MY_ORDERS') {\n loadTask = orderFactory.getOrders($scope.mainProjectId, $scope.filter, $scope.pagination, $scope.searchString);\n }\n }\n if ($scope.currentOrdersType === 'EXTENDED_ORDERS') {\n loadTask = orderFactory.getOrdersFromExtendedSet($scope.mainProjectId, $scope.filter, $scope.pagination, $scope.searchString);\n }\n if (loadTask) {\n loadTask = loadTask.then(function (orderSlice) {\n var orders = orderSlice.items;\n if (!$scope.showingArchive) {\n orders = labelOld(orders);\n }\n orders = $filter('orderBy')(orders, 'time_i', false);\n orders = $filter('orderBy')(orders, 'date_i', false);\n $scope.orders = orders;\n $scope.filteredOrders = orders;\n $rootScope.orders = orders;\n $scope.paginationConfig.totalItems = orderSlice.totalCount;\n updateMiniListOrders();\n $rootScope.$broadcast('updatedOrders');\n $rootScope.$broadcast('updateCalendar');\n }, function () {\n // Error is handled by orderFactory\n });\n }\n return loadTask;\n }\n $scope.updatePaginationAndLoad = function (skip, take) {\n $scope.pagination.skip = skip;\n $scope.pagination.take = take;\n loadOrders();\n };\n function updateDatePagination() {\n $scope.pagination.from = moment($scope.viewDateRef).startOf('month').subtract(7, 'days').toDate();\n $scope.pagination.to = moment($scope.viewDateRef).endOf('month').add(7, 'days').toDate();\n $scope.loadedMonth = $scope.viewDateRef.getMonth();\n }\n function resetPagination() {\n $scope.pagination.skip = null;\n $scope.pagination.take = null;\n $scope.pagination.from = null;\n $scope.pagination.to = null;\n $scope.paginationConfig.currentPage = 1;\n $scope.loadedMonth = null;\n if ($scope.currentOrdersPeriodType === 'LIST') {\n $scope.pagination.skip = 0;\n $scope.pagination.take = $scope.paginationConfig.pageSize;\n } else if ($scope.currentOrdersPeriodType !== 'LIST') {\n updateDatePagination();\n }\n }\n function isDatePaginationIsOutOfRange() {\n return $scope.loadedMonth !== $scope.viewDateRef.getMonth();\n }\n $scope.onViewDateChanged = function (newDate, periodType) {\n $scope.viewDateRef = newDate;\n $scope.setCurrentOrdersView(periodType, $scope.currentOrdersType);\n };\n $scope.setCurrentOrdersView = function (periodType, ordersType) {\n var hasChangedOrdersType = $scope.currentOrdersType != ordersType;\n var hasChangedToListView = periodType === 'LIST' && $scope.currentOrdersPeriodType !== 'LIST';\n var hasChangedDateInCalendarView = periodType !== 'LIST' && isDatePaginationIsOutOfRange();\n updateOrderTypeFilterForPeriodType(periodType);\n $scope.currentOrdersPeriodType = periodType;\n $scope.currentOrdersType = ordersType;\n resetPagination();\n if (hasChangedOrdersType || hasChangedToListView || hasChangedDateInCalendarView) {\n loadOrders();\n }\n };\n function getDefaultOrderTypesForPeriodType(periodType) {\n switch (periodType) {\n case 'LIST':\n return [];\n case 'DAY':\n case 'WEEK':\n return [OrderTypeEnum.DIRECT_DELIVERY, OrderTypeEnum.RECURRING_DIRECT_DELIVERY];\n break;\n default:\n console.log('Unknown period type: ' + $scope.currentOrdersPeriodType);\n return undefined;\n }\n }\n function updateOrderTypeFilterForPeriodType(newPeriodType) {\n if ($scope.currentOrdersPeriodType === newPeriodType) return;\n var currentDefaultOrderTypes = getDefaultOrderTypesForPeriodType($scope.currentOrdersPeriodType);\n var isDefaultOrderTypes = generalHelperService.areEquivalentArrays($scope.filter.orderTypes, currentDefaultOrderTypes);\n if (isDefaultOrderTypes) {\n $scope.filter.orderTypes = getDefaultOrderTypesForPeriodType(newPeriodType);\n }\n }\n function setInitialCurrentOrdersView() {\n if ($location.search().date && !$scope.showingArchive) {\n var timestamp = Date.parse($location.search().date);\n if (isNaN(timestamp) == false) {\n $scope.viewDateRef = new Date(timestamp);\n }\n }\n var periodType = $location.search().periodType && !$scope.showingArchive ? $location.search().periodType.toUpperCase() : 'LIST';\n var ordersType = $scope.showingArchive ? 'MY_ORDERS' : 'EXTENDED_ORDERS';\n $scope.setCurrentOrdersView(periodType, ordersType);\n }\n setInitialCurrentOrdersView();\n $scope.$on('updateOrders', function () {\n if ($scope.currentOrdersPeriodType !== 'LIST' && isDatePaginationIsOutOfRange()) {\n updateDatePagination();\n loadOrders();\n } else if ($scope.currentOrdersPeriodType === 'LIST') {\n loadOrders();\n } else {\n updateMiniListOrders();\n $rootScope.$broadcast('updateCalendar');\n }\n });\n var selected = [];\n $scope.showSideMenu = false;\n $scope.identifyRoles = function () {\n $scope.isAdmin = roleService.isAdmin();\n $scope.isServicenter = roleService.isServicenter();\n $scope.isWarehousePlanner = roleService.isWarehousePlanner();\n $scope.isWarehouseOperator = roleService.isWarehouseOperator();\n $scope.isInternal = roleService.isInternal();\n $scope.isCustomer = roleService.isCustomer();\n };\n $scope.identifyRoles();\n var updateCalendarEvents = function updateCalendarEvents() {\n $scope.calendarEvents = [];\n angular.forEach($scope.calendarOrders, function (order) {\n $scope.calendarEvents.push(createCalendarEventFromOrder(order));\n });\n };\n $scope.toggleOrderTypeVisibility = function (orderType) {\n var shallInclude = !$scope.isOrderTypeSelected(orderType);\n megaFilterService.includeOrExcludeOrderType($scope.filter, orderType, shallInclude);\n loadOrders();\n };\n $scope.isOrderTypeSelected = function (orderType) {\n if (!$scope.filter.orderTypes) return false;\n return $scope.filter.orderTypes.indexOf(orderType) !== -1;\n };\n $scope.reloadTable = function () {\n $scope.selectedAll = false;\n $scope.selectedAny = false;\n if ($scope.currentOrdersType !== 'PACKAGES') {\n // Set filtered orders to calendar\n $scope.calendarOrders = $filter('filter')($scope.filteredOrders, {\n task_status: '!' + TaskStatusTypeEnum.CANCELLED\n }, true);\n updateCalendarEvents();\n // Update calendar view\n $rootScope.$broadcast('updateCalendar');\n }\n };\n var getCalendarEventColors = function getCalendarEventColors(order) {\n var borderClasses = {\n confirmed: 'sp-green-border',\n notified: 'sp-blue-border',\n canceled: 'sp-red-border',\n empty: 'sp-grey-border'\n };\n var borderClass = borderClasses[$scope.getTaskStatus(order.task_status)];\n var pinColorFirst = null;\n var pinColorSecond = null;\n var locationId = order.vehicle_drop_location_id ? order.vehicle_drop_location_id : order.resource_location_id ? order.resource_location_id : null;\n if (locationId) {\n pinColorFirst = $scope.generateFirstColorClass(locationId);\n pinColorSecond = $scope.generateSecondColorClass(locationId);\n }\n ;\n return [borderClass, pinColorFirst, pinColorSecond];\n };\n var createCalendarEventFromOrder = function createCalendarEventFromOrder(order) {\n var shortTitle = order.order_number.substring(0, 2);\n var startsAt = moment(order.date_i + ' ' + order.time_i, 'YYYY-MM-DD HH:mm').toDate();\n var endsAtDate = order.date_f ? order.date_f : order.date_i; // date_f is undefined when start and end on the same day\n var endsAtTime = order.time_f ? order.time_f : moment(order.time_i, 'HH:mm').add(60, 'm').format('HH:mm'); // If no time span, add 60 minutes for visibility\n var endsAt = moment(endsAtDate + ' ' + endsAtTime, 'YYYY-MM-DD HH:mm').toDate();\n\n // Handle extremely short events: add extra time, for calendar visibility, but remember the real end date\n var realEndsAt = new Date(endsAt.getTime());\n var duration = moment(endsAt).diff(moment(startsAt), 'minutes');\n if (duration <= 60) {\n endsAt = new Date(moment(endsAt).add(60 - duration, 'm'));\n }\n ;\n var colors = getCalendarEventColors(order);\n var calendarEvent = {\n title: $scope.getCalendarTooltipText(order),\n shortTitle: shortTitle,\n startsAt: startsAt,\n endsAt: endsAt,\n realEndsAt: realEndsAt,\n color: calendarConfig.colorTypes.white,\n borderClass: colors[0],\n order: order,\n pinColorFirst: colors[1],\n pinColorSecond: colors[2],\n dropLocationId: order.vehicle_drop_location_id,\n resourceLocationId: order.resource_location_id,\n draggable: false,\n resizable: false\n };\n return calendarEvent;\n };\n $scope.getCalendarTooltipText = function (order) {\n var tooltipText = order.order_type_name + ', ' + order.task_status_name;\n if (order.vehicle_drop_location_name) {\n tooltipText += ', ' + order.vehicle_drop_location_name;\n }\n ;\n if (order.resource_location_name) {\n tooltipText += ', ' + order.resource_location_name;\n }\n ;\n if (order.supplier) {\n tooltipText += ', ' + order.supplier;\n }\n ;\n if (order.content) {\n tooltipText += ', ' + order.content;\n }\n ;\n return tooltipText;\n };\n $scope.generateFirstColorClass = function (id) {\n return generalHelperService.generateFirstColorClass(id);\n };\n $scope.generateSecondColorClass = function (id) {\n return generalHelperService.generateSecondColorClass(id);\n };\n $scope.getTaskStatus = function (id) {\n switch (id) {\n case TaskStatusTypeEnum.CONFIRMED:\n return 'confirmed';\n case TaskStatusTypeEnum.CANCELLED:\n return 'canceled';\n case -1:\n return 'empty';\n default:\n return 'notified';\n }\n };\n $scope.isDirectOrder = function (orderType) {\n return OrderTypeEnum.DIRECT_DELIVERY === orderType;\n };\n $scope.isDirectOrRecurringDirectOrder = function (orderType) {\n return OrderTypeEnum.RECURRING_DIRECT_DELIVERY === orderType || OrderTypeEnum.DIRECT_DELIVERY === orderType;\n };\n $scope.isConfirmedOrLater = function (taskStatusId) {\n return taskStatusService.isConfirmedOrLater(taskStatusId);\n };\n $scope.isNotified = function (taskStatusId) {\n return taskStatusService.isNotified(taskStatusId);\n };\n $scope.isCancelled = function (taskStatusId) {\n return taskStatusService.isCancelled(taskStatusId);\n };\n $scope.formatDateOrMonth = function (dateOrMonth) {\n var dateOrMonthString = dateOrMonth.toString();\n if (dateOrMonthString.length === 1) {\n return \"0\" + dateOrMonth;\n } else return dateOrMonth;\n };\n\n // FUTURE: Duplicated function. break out of controller and store result for faster translations.\n function loadMonthsFromLanguage() {\n var translations = $translate.instant(['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']);\n var months = [];\n months.push(translations['JAN']);\n months.push(translations['FEB']);\n months.push(translations['MAR']);\n months.push(translations['APR']);\n months.push(translations['MAY']);\n months.push(translations['JUN']);\n months.push(translations['JUL']);\n months.push(translations['AUG']);\n months.push(translations['SEP']);\n months.push(translations['OCT']);\n months.push(translations['NOV']);\n months.push(translations['DEC']);\n return months;\n }\n function updateStatusChangeAllowed() {\n $scope.statusChangeAllowed = false;\n var markedOrders = $filter('filter')($scope.orders, {\n selected: true\n }, true);\n var firstOrderType = null;\n var firstOrderStatus = null;\n if (markedOrders && markedOrders.length > 0) {\n firstOrderType = markedOrders[0].order_type;\n firstOrderStatus = markedOrders[0].task_status;\n for (var i = 0; i < markedOrders.length; i++) {\n var currOrder = markedOrders[i];\n if (currOrder.order_type !== firstOrderType || currOrder.task_status !== firstOrderStatus || $scope.nextStatus === generalHelperService.getKeyByValue(TaskStatusTypeEnum, firstOrderStatus)) {\n $scope.statusChangeAllowed = false;\n return;\n }\n }\n $scope.statusChangeAllowed = true;\n } else {\n $scope.statusChangeAllowed = false;\n }\n }\n $scope.checkAll = function () {\n selected = [];\n angular.forEach($scope.filteredOrders, function (o) {\n o.selected = $scope.selectedAll;\n if (o.selected) {\n selected.push(o);\n }\n });\n $scope.updateSelection();\n };\n $scope.updateSelection = function () {\n var oneActiveSelected = false;\n var oneInactiveSelected = false;\n $scope.selectedAny = false;\n selected = [];\n angular.forEach($scope.filteredOrders, function (o) {\n if (!$scope.selectedAny && o.selected) {\n $scope.selectedAny = true;\n }\n if (o.selected) {\n selected.push(o);\n }\n if (!oneActiveSelected && o.is_active && o.selected) {\n oneActiveSelected = true;\n }\n if (!oneInactiveSelected && !o.is_active && o.selected) {\n oneInactiveSelected = true;\n }\n });\n if (!$scope.selectedAny) {\n $scope.selectedAll = false;\n }\n\n // Mixed selection\n if (oneActiveSelected && oneInactiveSelected) {\n $scope.hasMixedSelection = true;\n $scope.hasActiveSelection = true;\n $scope.hasInactiveSelection = true;\n } else {\n $scope.hasMixedSelection = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n }\n\n //Active selction\n if (oneActiveSelected && !oneInactiveSelected) {\n $scope.hasActiveSelection = true;\n } else $scope.hasActiveSelection = false;\n\n //Inactive selction\n if (!oneActiveSelected && oneInactiveSelected) {\n $scope.hasInactiveSelection = true;\n } else $scope.hasInactiveSelection = false;\n\n //Updating wether bulk change status is allowed\n if ($scope.currentOrdersPeriodType === 'LIST') {\n updateStatusChangeAllowed();\n }\n };\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.loadOrders();\n }\n };\n $scope.filterOrders = function () {\n loadOrders();\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.paginationConfig.currentPage - 1) * $scope.paginationConfig.pageSize;\n };\n $scope.createTransshipmentOrder = function () {\n $scope.createOrder(OrderTypeEnum.TRANSSHIPMENT);\n };\n $scope.createDirectDeliveryOrder = function () {\n $scope.createOrder(OrderTypeEnum.DIRECT_DELIVERY);\n };\n $scope.createStoringOrder = function () {\n $scope.createOrder(OrderTypeEnum.STORING);\n };\n $scope.createMaterialOrder = function () {\n $scope.createOrder(OrderTypeEnum.MATERIAL);\n };\n $scope.createResourceBookingOrder = function () {\n $scope.createOrder(OrderTypeEnum.RESOURCE_BOOKING);\n };\n $scope.openWarehouseBalance = function () {\n warehouseBalanceModalService.open();\n };\n $scope.createOrder = function (orderType) {\n orderFormModalService.openCreate(orderType).then(function () {\n loadOrders();\n });\n };\n $scope.viewOrder = function (order_type, id, copy) {\n if (id === -1 || $scope.orderInterctionIsLocked) return;\n var orderFormPromise;\n if ($scope.isInternal) {\n orderFormPromise = orderFormModalService.openManage(id, order_type, copy);\n } else {\n orderFormPromise = orderFormModalService.openView(id, order_type, copy);\n }\n orderFormPromise.then(function (results) {\n if (results.copy) {\n $scope.viewOrder(order_type, id, true);\n }\n if (results.success) {\n loadOrders();\n }\n });\n };\n $scope.viewOrderIfDirectDelivery = function (order_type, order_id) {\n if ($scope.isDirectOrRecurringDirectOrder(order_type)) {\n $scope.viewOrder(order_type, order_id, false);\n }\n };\n $scope.calendarOnEventClicked = function (calendarEvent) {\n var order = calendarEvent.order;\n $scope.viewOrder(order.order_type, order.order_id, false);\n };\n $scope.openMegaFilter = function () {\n megaFilterModalService.openFilter($scope.filter, $scope.showingArchive, $scope.showingArchive).then(function (newFilter) {\n $scope.filter = newFilter;\n loadOrders().then(function () {\n if (!$scope.showingArchive) {\n $scope.calendarOrders = $filter('filter')($scope.filteredOrders, {\n task_status: '!' + TaskStatusTypeEnum.CANCELLED\n }, true);\n }\n });\n }, function () {} // User clicked cancel\n );\n };\n\n $scope.displayDateSeparator = function (order1, order2) {\n if (order2 === null || typeof order2 === 'undefined') {\n return true;\n }\n return order1.date_i !== order2.date_i;\n };\n $scope.displayDate = function (date) {\n var months = loadMonthsFromLanguage();\n var today = new Date().toISOString().split('T')[0];\n var pDate = new Date(date);\n return (today === date ? $translate.instant('TODAY') + ' ' : '') + pDate.getDate() + ' ' + months[pDate.getMonth()];\n };\n $scope.isToday = function (date) {\n var today = new Date().toISOString().split('T')[0];\n return date === today;\n };\n $scope.isBeforeToday = function (date) {\n var today = new Date().toISOString().split('T')[0];\n return date < today;\n };\n $scope.getNextStatus = function (open) {\n $scope.nextStatus = null;\n if ($scope.statusChangeAllowed && open) {\n var markedOrders = $filter('filter')($scope.orders, {\n selected: true\n }, true);\n orderFactory.getNextStatus(markedOrders[0].order_type, markedOrders[0].task_status).then(function (result) {\n $scope.nextStatus = generalHelperService.getKeyByValue(TaskStatusTypeEnum, result.data);\n updateStatusChangeAllowed();\n });\n }\n };\n $scope.setNextStatus = function () {\n var markedOrders = $filter('filter')($scope.orders, {\n selected: true\n }, true);\n var markedOrderIds = markedOrders.map(function (order) {\n return order.order_id;\n });\n orderFactory.setNextStatusMultiple(markedOrderIds).then(function (result) {\n loadOrders();\n $scope.statusChangeAllowed = false;\n ngToast.success(\"Status för valda ordrar ändrade.\");\n }, function (error) {\n ngToast.danger(\"Ett fel inträffade vid ändring av status för ordrar.\");\n });\n };\n\n // Corrects the table on currentPage value change\n $scope.$watch('pagination.currentPage', function () {\n $scope.updateTableRange();\n }, true);\n $scope.$on('updatedOrders', function () {\n // $scope.showingArchive = $localStorage.header.btnActive === 'archive';\n if ($scope.showingArchive && ($scope.currentOrdersPeriodType !== 'LIST' || $scope.currentOrdersType === 'EXTENDED_ORDERS')) {\n $scope.currentOrdersPeriodType = 'LIST';\n $scope.currentOrdersType = 'MY_ORDERS';\n }\n $scope.reloadTable();\n });\n $scope.$on('updatedUserData', function () {\n setMainProjectState();\n $scope.identifyRoles();\n loadOrders();\n });\n $scope.$on('searchFromMobile', function (event, mobileSearchString) {\n $scope.searchString = mobileSearchString;\n loadOrders();\n });\n}]);\n'use strict';\n\ncontrollers.controller('OrderCalendarController', ['$scope', '$rootScope', '$filter', '$translate', 'generalHelperService', function ($scope, $rootScope, $filter, $translate, generalHelperService) {\n // Global date references can be found in orderController.\n\n // Extend Date to get Week\n // Returns the ISO week of the date.\n Date.prototype.getWeek = function () {\n var date = new Date(this.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);\n };\n\n // ----- Day utility functions -----\n function generateTodayString() {\n var today = new Date();\n var thisYear = today.getFullYear();\n var thisMonth = $scope.formatDateOrMonth(today.getMonth() + 1);\n var thisDate = $scope.formatDateOrMonth(today.getDate());\n var todayString = thisYear + '-' + thisMonth + '-' + thisDate;\n return todayString;\n }\n $scope.isToday = function (date) {\n var formatedDate = $scope.formatDateOrMonth(date);\n var todayString = generateTodayString();\n var compareDate = $scope.viewDateRef.getFullYear() + '-' + ($scope.viewDateRef.getMonth() + 1) + '-' + formatedDate;\n if (todayString === compareDate) {\n return true;\n } else return false;\n };\n\n // ----- Date utility functions -----\n // ISO week\n $scope.getFirstDateOfWeek = function (w, y) {\n var simple = new Date(y, 0, 1 + (w - 1) * 7);\n var dow = simple.getDay();\n var ISOweekStart = simple;\n if (dow <= 4) ISOweekStart.setDate(simple.getDate() - simple.getDay() + 1);else ISOweekStart.setDate(simple.getDate() + 8 - simple.getDay());\n return ISOweekStart;\n };\n\n // Gets the date of the first monday in current month\n $scope.getCalendarMondaysDate = function () {\n var searchDate = new Date($scope.viewDateRef);\n searchDate.setDate(1);\n while (searchDate.getDay() !== 1) {\n searchDate.setDate(searchDate.getDate() - 1);\n }\n return searchDate;\n };\n\n // Gets the date of day 0-6 of current week.\n $scope.getDateOfDay = function (day) {\n var week = $scope.viewDateRef.getWeek();\n var year = $scope.viewDateRef.getFullYear();\n var firstDateOfWeek = new Date($scope.getFirstDateOfWeek(week, year).getTime());\n var upcoming = $scope.getUpcomingDate(firstDateOfWeek, day - 1);\n return upcoming.getDate();\n };\n $scope.getDateObjectOfDay = function (day) {\n var week = $scope.viewDateRef.getWeek();\n var year = $scope.viewDateRef.getFullYear();\n var firstDateOfWeek = new Date($scope.getFirstDateOfWeek(week, year).getTime());\n var upcoming = $scope.getUpcomingDate(firstDateOfWeek, day - 1);\n return upcoming;\n };\n $scope.getDateObjectOfDateNumber = function (number) {\n var date = new Date($scope.viewDateRef.getTime());\n date.setDate(number);\n return date;\n };\n $scope.getUpcomingDate = function (date, increment) {\n var upcomming = new Date(date.getTime());\n upcomming.setDate(date.getDate() + increment);\n return upcomming;\n };\n\n // ----- Orders utility functions -----\n $scope.getOrdersByDate = function (date) {\n var y = $scope.viewDateRef.getFullYear();\n var m = $scope.formatDateOrMonth($scope.viewDateRef.getMonth() + 1);\n var d = $scope.formatDateOrMonth(date);\n var dateString = y + '-' + m + '-' + d;\n var ordersInDate = [];\n for (var i = 0; i < $scope.calendarOrders.length; i++) {\n if ($scope.calendarOrders[i].date_i === dateString) {\n ordersInDate.push($scope.calendarOrders[i]);\n }\n }\n return ordersInDate;\n };\n $scope.getOrdersByDateObject = function (date) {\n var m = $scope.formatDateOrMonth(date.getMonth() + 1);\n var d = $scope.formatDateOrMonth(date.getDate());\n var dateString = date.getFullYear() + '-' + m + '-' + d;\n var ordersInDate = [];\n for (var i = 0; i < $scope.calendarOrders.length; i++) {\n if ($scope.calendarOrders[i].date_i === dateString) {\n ordersInDate.push($scope.calendarOrders[i]);\n }\n }\n return ordersInDate;\n };\n\n // Week is defined by viewDateRef, that is the week.\n $scope.getOrdersInCurrentWeek = function () {\n var datesThisWeek = [];\n var ordersThisWeek = [];\n for (var i = 1; i < 8; i++) {\n datesThisWeek.push($scope.getDateObjectOfDay(i));\n }\n for (var j = 0; j < datesThisWeek.length; j++) {\n ordersThisWeek = ordersThisWeek.concat($scope.getOrdersByDateObject(datesThisWeek[j]));\n }\n return ordersThisWeek;\n };\n\n // To make the orders align correctly. Sets part order initial time to first part initial time.\n function resetOrderPartTimesToInitial(orders) {\n angular.forEach(orders, function (partOrderNotFirst) {\n if (partOrderNotFirst.is_part && partOrderNotFirst.part_number !== 1) {\n angular.forEach($scope.calendarOrders, function (singleOrStartOrderPart) {\n if ((!singleOrStartOrderPart.is_part || singleOrStartOrderPart.is_part && singleOrStartOrderPart.part_number === 1) && singleOrStartOrderPart.order_id === partOrderNotFirst.order_id) {\n partOrderNotFirst.time_i = singleOrStartOrderPart.time_i;\n }\n });\n }\n });\n return orders;\n }\n ;\n $scope.getOrdersInCurrentWeekByDateAndHour = function (date, hour) {\n var ordersInHour = [];\n var ordersInWeek = $scope.getOrdersInCurrentWeek();\n resetOrderPartTimesToInitial(ordersInWeek);\n var h = ('' + hour).length === 1 ? '0' + hour : hour;\n var d = ('' + date).length === 1 ? '0' + date : date;\n var timePattern = new RegExp(\"^\" + h + \":\\\\d{2}$\");\n var datePattern = new RegExp(\"^\\\\d{4}-\\\\d{2}-\" + d + \"$\");\n for (var i = 0; i < ordersInWeek.length; i++) {\n if (timePattern.test(ordersInWeek[i].time_i) && datePattern.test(ordersInWeek[i].date_i)) {\n ordersInHour.push(ordersInWeek[i]);\n }\n }\n return ordersInHour;\n };\n $scope.getOrdersByDateAndHour = function (date, hour) {\n var ordersByDate = $scope.getOrdersByDate(date);\n var h = ('' + hour).length === 1 ? '0' + hour : hour;\n var timePattern = new RegExp(\"^\" + h + \":\\\\d{2}$\");\n var ordersByTime = [];\n for (var i = 0; i < ordersByDate.length; i++) {\n if (timePattern.test(ordersByDate[i].time_i)) {\n ordersByTime.push(ordersByDate[i]);\n }\n }\n return ordersByTime;\n };\n $scope.getOrdersByHour = function (orders, hour) {\n var inHour = [];\n angular.forEach(orders, function (order, index) {\n var startHour = order.time_i.split(':')[0];\n if (startHour === '' + hour) {\n inHour.push(order);\n }\n });\n return inHour;\n };\n\n // Open order\n $scope.viewOrderFromCalendar = function (order, event, stopPropagation, orderInterctionIsLocked) {\n if (stopPropagation !== -1) event.stopPropagation();\n $scope.viewOrder(order.order_type, order.order_id, false, orderInterctionIsLocked);\n };\n\n // Other utility functions -----\n $scope.getTaskStatus = function (id) {\n switch (id) {\n case TaskStatusTypeEnum.CONFIRMED:\n return 'confirmed';\n case TaskStatusTypeEnum.CANCELLED:\n return 'canceled';\n case -1:\n return 'empty';\n default:\n return 'notified';\n }\n };\n\n // For week calendar view\n function generateOrderWeekPlaceholderList() {\n // Placeholder management for each date\n $scope.orderWeekPlaceholderList = [];\n for (var i = 1; i < 8; i++) {\n $scope.orderWeekPlaceholderList[i] = [];\n for (var j = 0; j < 24; j++) {\n $scope.orderWeekPlaceholderList[i][j] = {\n first: {\n order_id: -1,\n order: {\n task_status: -1,\n order_id: -1\n },\n available: true\n },\n second: {\n order_id: -1,\n order: {\n task_status: -1,\n order_id: -1\n },\n available: true\n },\n third: {\n order_id: -1,\n order: {\n task_status: -1,\n order_id: -1\n },\n available: true\n },\n fourth: {\n order_id: -1,\n order: {\n task_status: -1,\n order_id: -1\n },\n available: true\n }\n };\n }\n }\n ;\n }\n ;\n function incrementDay(day) {\n if (day < 7) {\n day++;\n }\n return day;\n }\n ;\n function placeOrdersAndReservePlaceholders() {\n for (var time = 0; time < 24; time++) {\n for (var day = 1; day < 8; day++) {\n var dateOfDay = $scope.getDateOfDay(day);\n var ordersInHour = $scope.getOrdersInCurrentWeekByDateAndHour(dateOfDay, time);\n ordersInHour.forEach(function (order) {\n var done = false;\n // Add orders reaching from previous week\n angular.forEach($scope.orderWeekPlaceholderList[day][time], function (placeholder, placeholderIndex) {\n if (!done && order.is_part && order.part_number !== 1 && day === 1) {\n placeholder.order_id = order.order_id;\n placeholder.order = order;\n placeholder.available = false;\n done = true;\n if (order.is_part && order.part_number !== order.parts_count) {\n // Reserv next date if not last\n $scope.orderWeekPlaceholderList[incrementDay(day)][time][placeholderIndex].order_id = order.order_id;\n $scope.orderWeekPlaceholderList[incrementDay(day)][time][placeholderIndex].available = false;\n }\n }\n });\n\n // Is part, part_number !== 1\n angular.forEach($scope.orderWeekPlaceholderList[day][time], function (placeholder, placeholderIndex) {\n if (!done && order.is_part && order.part_number !== 1 && placeholder.order_id === order.order_id) {\n placeholder.order_id = order.order_id;\n placeholder.order = order;\n placeholder.available = false;\n done = true;\n if (order.is_part && order.part_number !== order.parts_count) {\n // Reserv next date if not last\n $scope.orderWeekPlaceholderList[incrementDay(day)][time][placeholderIndex].order_id = order.order_id;\n $scope.orderWeekPlaceholderList[incrementDay(day)][time][placeholderIndex].available = false;\n }\n }\n });\n angular.forEach($scope.orderWeekPlaceholderList[day][time], function (placeholder, placeholderIndex) {\n if (!done && placeholder.available && (order.is_part && order.part_number === 1 || !order.is_part)) {\n placeholder.order_id = order.order_id;\n placeholder.order = order;\n placeholder.available = false;\n done = true;\n if (order.is_part && order.part_number !== order.parts_count) {\n // Reserv next date if not last\n $scope.orderWeekPlaceholderList[incrementDay(day)][time][placeholderIndex].order_id = order.order_id;\n $scope.orderWeekPlaceholderList[incrementDay(day)][time][placeholderIndex].available = false;\n }\n }\n });\n });\n }\n }\n }\n ;\n function removePlaceholdersByKeys(placeholderList, keysToRemove) {\n if (!keysToRemove.length) return;\n angular.forEach(keysToRemove, function (placeholderKey) {\n delete placeholderList[placeholderKey];\n });\n }\n function cleanUnusedPlaceholders() {\n var keysToRemove = [];\n for (var time = 0; time < 24; time++) {\n for (var day = 1; day < 8; day++) {\n var nLeftoverPlaceholders = 0;\n angular.forEach($scope.orderWeekPlaceholderList[day][time], function (placeholder, placeholderKey) {\n if (placeholder.available) {\n keysToRemove.push(placeholderKey);\n } else keysToRemove = [];\n });\n removePlaceholdersByKeys($scope.orderWeekPlaceholderList[day][time], keysToRemove);\n }\n }\n }\n\n // Run on initialization\n function generateOrderWeekPlaceholderListAndPlaceOrders() {\n // Sets upp a 2Dim array for four placeholders.\n generateOrderWeekPlaceholderList();\n // Fills the 2Dim array with orders by placing part_num = 1 orders\n // and single orders and reserving for upcoming orders the next day.\n placeOrdersAndReservePlaceholders();\n //Cleans leftover placeholders so week-time cells won't allways fill up the full height.\n cleanUnusedPlaceholders();\n }\n ;\n generateOrderWeekPlaceholderListAndPlaceOrders();\n function generateOrderDayList() {\n var date = $scope.viewDateRef;\n var y = date.getFullYear();\n var m = $scope.formatDateOrMonth(date.getMonth() + 1);\n var d = $scope.formatDateOrMonth(date.getDate());\n var dateString = y + '-' + m + '-' + d;\n var ordersDateReset = resetOrderPartTimesToInitial($scope.calendarOrders);\n $scope.ordersInDay = [];\n $scope.ordersInDay = $filter('filter')(ordersDateReset, {\n date_i: dateString\n }, true);\n }\n ;\n generateOrderDayList();\n\n // There are more orders than placeholders in week view.\n $scope.hasMoreOrdersInWeek = function (day, time) {\n var dateOfDay = $scope.getDateOfDay(day);\n var placeholdersAreFull = $scope.getOrdersInCurrentWeekByDateAndHour(dateOfDay, time).length > 4;\n return placeholdersAreFull;\n };\n $scope.hasMissingOrdersFromPrevDayInWeek = function (day, time) {\n var ordersInCurrentDateAndTime = $scope.orderWeekPlaceholderList[day][time]; // With placeholders\n var ordersInPrevDateAndTime = $scope.getOrdersInCurrentWeekByDateAndHour($scope.getDateOfDay(day - 1), time);\n var search = true;\n var found = true;\n angular.forEach(ordersInPrevDateAndTime, function (prevOrder) {\n if (search && !$.isEmptyObject(ordersInCurrentDateAndTime) && prevOrder.is_part) {\n found = false;\n angular.forEach(ordersInCurrentDateAndTime, function (currentOrder) {\n if (!found && prevOrder.order_id === currentOrder.order_id || prevOrder.is_part && prevOrder.part_number === prevOrder.parts_count) {\n // A placeholder comparison\n\n found = true;\n }\n });\n if (!found) {\n search = false;\n }\n }\n });\n var isMissing = !found;\n return isMissing;\n };\n\n // Color utility functions\n $scope.generateFirstColorClass = function (id) {\n return generalHelperService.generateFirstColorClass(id);\n };\n $scope.generateSecondColorClass = function (id) {\n return generalHelperService.generateSecondColorClass(id);\n };\n\n // listen for the event\n $scope.$on('updateCalendar', function (event) {\n generateOrderWeekPlaceholderListAndPlaceOrders();\n generateOrderDayList();\n if (!$scope.$$phase) {\n $scope.$apply();\n }\n });\n}]);\n'use strict';\n\ncontrollers.controller('OrderMobileController', ['$scope', '$rootScope', function ($scope, $rootScope) {\n $scope.isMobileOrderSelected = false;\n $scope.pagination.take = 14;\n $scope.selectedVehicleDropLocationId = null;\n $scope.showMore = function () {\n $scope.pagination.take += 10;\n $rootScope.$broadcast('updateOrders');\n };\n $scope.$on('filterVehicleDropLocationFromMobile', function (event, vehicleDropLocationId) {\n $scope.filter.vehicleDropLocations = [vehicleDropLocationId];\n $rootScope.$broadcast('updateOrders');\n });\n}]);\n'use strict';\n\ncontrollers.controller('PackageController', ['$uibModal', '$scope', '$rootScope', '$filter', 'packageFactory', '$translate', 'errorService', 'keyCodes', 'generalHelperService', function ($uibModal, $scope, $rootScope, $filter, packageFactory, $translate, errorService, keyCodes, generalHelperService) {\n // Wrap dateTimes in Object to enable two-way binding\n var dateTimeNow = moment().format(\"YYYY-MM-DD HH:mm\");\n $scope.filterDates = {\n to: dateTimeNow,\n from: moment(dateTimeNow).subtract(1, 'weeks').format(\"YYYY-MM-DD HH:mm\")\n };\n $scope.getChildTranslationKey = function (childLocationTypeId) {\n return generalHelperService.getKeyByValue(PackageTimeValueTypeEnum, childLocationTypeId);\n };\n $scope.timeValueTypes = [{\n id: PackageTimeValueTypeEnum.CREATED,\n tag: $scope.getChildTranslationKey(PackageTimeValueTypeEnum.CREATED)\n }, {\n id: PackageTimeValueTypeEnum.UPDATED,\n tag: $scope.getChildTranslationKey(PackageTimeValueTypeEnum.UPDATED)\n }, {\n id: PackageTimeValueTypeEnum.DELIVERED,\n tag: $scope.getChildTranslationKey(PackageTimeValueTypeEnum.DELIVERED)\n }];\n $scope.chosenTimeValueType = $scope.timeValueTypes[0];\n $scope.innerRange = 5;\n $scope.currentPage = 1;\n $scope.itemRangeBottom = 0;\n $scope.itemRange = 15;\n $scope.itemRangeTop = $scope.itemRange - 1;\n $scope.totalItems = 0;\n $scope.selectedAny = false;\n $scope.selectedAll = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.hasMixedSelection = false;\n $scope.showInactive = false;\n $scope.searchString = '';\n $scope.keyCode = '';\n $scope.lastSortCol = 'package_created';\n $scope.sortCol = 'package_created';\n $scope.sortReverse = true;\n $scope.sortReverseFn = function () {\n if ($scope.lastSortCol === $scope.sortCol && !$scope.sortReverse) {\n $scope.sortReverse = true;\n } else {\n $scope.lastSortCol = $scope.sortCol;\n $scope.sortReverse = false;\n }\n };\n var selected = [];\n var fetching = false;\n $rootScope.reloadTable = $scope.reloadPackageTable = function () {\n if (fetching) {\n return;\n }\n\n //Make sure that if chosenTimeValueType is updated, sort field is as well. \n if ($scope.isTimeFilterActive()) {\n var isSame = $scope.sortCol === $scope.lastSortCol;\n $scope.setActiveTimeFilter();\n if (isSame) {\n $scope.lastSortCol = $scope.sortCol;\n }\n }\n function handleResponse(response) {\n var data = response.data;\n $scope.packages = packageFactory.repackageDTOArray(data);\n $scope.totalItems = $scope.packages.length;\n fetching = false;\n }\n fetching = true;\n if ($scope.filterDates.from || $scope.filterDates.to) {\n packageFactory.getPackagesWithFilter({\n dateTimeFrom: $scope.filterDates.from ? $scope.filterDates.from : null,\n dateTimeTo: $scope.filterDates.to ? $scope.filterDates.to : null\n }, $scope.chosenTimeValueType.id, $scope.searchString).then(handleResponse, function (error) {\n errorService.handleError(error);\n fetching = false;\n });\n } else {\n packageFactory.getPackages().then(handleResponse, errorService.handleError);\n }\n };\n $scope.checkAll = function () {\n selected = [];\n var filtered = $filter('inactive')($scope.packages, $scope.showInactive);\n angular.forEach(filtered, function (p) {\n p.selected = $scope.selectedAll;\n if (p.selected) {\n selected.push(p);\n }\n });\n $scope.updateSelection();\n };\n $scope.unCheckAll = function () {\n selected = [];\n angular.forEach($scope.packages, function (p) {\n p.selected = false;\n });\n $scope.updateSelection();\n };\n $scope.updateSelection = function () {\n var oneActiveSelected = false;\n var oneInactiveSelected = false;\n $scope.selectedAny = false;\n selected = [];\n angular.forEach($scope.packages, function (p) {\n if (!$scope.selectedAny && p.selected) {\n $scope.selectedAny = true;\n }\n if (p.selected) {\n selected.push(p);\n }\n if (!oneActiveSelected && p.is_active && p.selected) {\n oneActiveSelected = true;\n }\n if (!oneInactiveSelected && !p.is_active && p.selected) {\n oneInactiveSelected = true;\n }\n });\n if (!$scope.selectedAny) {\n $scope.selectedAll = false;\n }\n\n // Mixed selection\n if (oneActiveSelected && oneInactiveSelected) {\n $scope.hasMixedSelection = true;\n $scope.hasActiveSelection = true;\n $scope.hasInactiveSelection = true;\n } else {\n $scope.hasMixedSelection = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n }\n\n //Active selction\n if (oneActiveSelected && !oneInactiveSelected) {\n $scope.hasActiveSelection = true;\n } else $scope.hasActiveSelection = false;\n\n //Inactive selction\n if (!oneActiveSelected && oneInactiveSelected) {\n $scope.hasInactiveSelection = true;\n } else $scope.hasInactiveSelection = false;\n };\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.searchString = $scope.pendingSearchString;\n $scope.updateFullTableRange('filter', $scope.packages, $scope.searchString);\n }\n };\n $scope.updateFullTableRange = function (filter, array, param) {\n var filtered = $filter(filter)(array, param);\n $scope.totalItems = filtered.length;\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.currentPage - 1) * $scope.itemRange;\n };\n\n // --- MODAL - CREATE ---\n var animationsEnabled = true;\n $scope.createPackage = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/package/package.html',\n controller: 'PackageInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create_package';\n },\n id: function id() {\n return -1;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n\n // --- MODAL - VIEW PACKAGE ---\n $scope.viewPackage = function (_id) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/package/package.html',\n controller: 'PackageInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view_package';\n },\n id: function id() {\n return _id;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n $scope.setActiveTimeFilter = function () {\n switch ($scope.chosenTimeValueType.id) {\n case PackageTimeValueTypeEnum.DELIVERED:\n $scope.sortCol = 'package_delivered';\n break;\n case PackageTimeValueTypeEnum.UPDATED:\n $scope.sortCol = 'package_updated';\n break;\n default:\n $scope.sortCol = 'package_created';\n break;\n }\n };\n $scope.isTimeFilterActive = function () {\n switch ($scope.sortCol) {\n case 'package_delivered':\n case 'package_updated':\n case 'package_created':\n return true;\n default:\n return false;\n }\n };\n $scope.filterByDate = function () {\n $rootScope.reloadTable();\n };\n $rootScope.reloadTable();\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('PackageInstanceController', ['$uibModalInstance', 'form_type', 'id', '$scope', '$rootScope', 'packageFactory', 'projectFactory', 'inputValidationService', 'errorService', function ($uibModalInstance, form_type, id, $scope, $rootScope, packageFactory, projectFactory, inputValidationService, errorService) {\n $scope.validated = false;\n $scope.form_type = form_type;\n $scope.package_name = '';\n $scope.system_package_name = '';\n $scope.project_id = -1;\n $scope.project_name = '';\n $scope.location = '';\n $scope.comments = '';\n if (form_type === 'view_package') {\n packageFactory.getPackage(id).then(function (response) {\n var data = response.data;\n $scope.package_id = id;\n $scope.package_name = data.Name;\n $scope.system_package_name = data.SystemName;\n $scope.project_id = data.ProjectId;\n $scope.project_name = data.ProjectName;\n $scope.package_location = data.Location;\n $scope.is_active = data.IsActive;\n $scope.comments = data.Comments;\n }, function (error) {\n errorService.handleError(error);\n });\n }\n\n // Finalizing or exiting form\n $scope.create = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = {\n \"Name\": $scope.package_name,\n \"SystemName\": $scope.system_package_name,\n \"Location\": $scope.package_location,\n \"ProjectId\": $scope.project_id,\n \"ProjectName\": $scope.project_name,\n \"IsActive\": true,\n \"Comments\": $scope.comments\n };\n packageFactory.createPackage(DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(\"Package created\"); // Pass in returned item here.\n };\n\n $scope.update = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = {\n \"PackageId\": $scope.package_id,\n \"Name\": $scope.package_name,\n \"SystemName\": $scope.system_package_name,\n \"Location\": $scope.package_location,\n \"ProjectId\": $scope.project_id,\n \"ProjectName\": $scope.project_name,\n \"IsActive\": $scope.is_active,\n \"Comments\": $scope.comments\n };\n packageFactory.updatePackage(DTO.PackageId, DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(results); // Pass in returned item here.\n };\n\n $scope.delete = function () {\n var DTO = {\n \"PackageId\": $scope.package_id\n };\n packageFactory.updatePackage(DTO.PackageId, DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(results); // Pass in returned item here.\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n $scope.validateForm = function () {\n $scope.formValid = false;\n return $scope.formValid;\n };\n}]);\n'use strict';\n\ncontrollers.controller('PackageCollectionController', ['$uibModal', '$scope', '$rootScope', '$filter', 'errorService', 'orderFactory', 'orderPackageCollectionFactory', 'packageFactory', 'taskStatusService', '$localStorage', 'roleService', 'keyCodes', 'generalHelperService', function ($uibModal, $scope, $rootScope, $filter, errorService, orderFactory, orderPackageCollectionFactory, packageFactory, taskStatusService, $localStorage, roleService, keyCodes, generalHelperService) {\n orderFactory.getGuid().then(function (response) {\n $scope.formGuid = response.data;\n });\n $scope.showSpecificPackageCollection = false;\n $scope.innerRange = 5;\n $scope.currentPage = 1;\n $scope.itemRangeBottom = 0;\n $scope.itemRange = 15;\n $scope.itemRangeTop = $scope.itemRange - 1;\n $scope.selectedAny = false;\n $scope.selectedAll = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.hasMixedSelection = false;\n $scope.showInactive = false;\n $scope.searchString = '';\n $scope.keyCode = '';\n $scope.lastSortCol = 'valid_to';\n $scope.sortCol = 'valid_to';\n $scope.sortReverse = false; // Show the collection orders that are closest to needing renewal first.\n\n $scope.isAdmin = roleService.isInternal();\n $scope.isServicenter = roleService.isInternal();\n $scope.isInternal = roleService.isInternal();\n var dateTimeNow = moment().format(\"YYYY-MM-DD HH:mm\");\n $scope.filterDates = {\n to: dateTimeNow,\n from: moment(dateTimeNow).subtract(1, 'weeks').format(\"YYYY-MM-DD HH:mm\")\n };\n $scope.getChildTranslationKey = function (childLocationTypeId) {\n return generalHelperService.getKeyByValue(PackageTimeValueTypeEnum, childLocationTypeId);\n };\n $scope.timeValueTypes = [{\n id: PackageTimeValueTypeEnum.CREATED,\n tag: $scope.getChildTranslationKey(PackageTimeValueTypeEnum.CREATED)\n }, {\n id: PackageTimeValueTypeEnum.UPDATED,\n tag: $scope.getChildTranslationKey(PackageTimeValueTypeEnum.UPDATED)\n }, {\n id: PackageTimeValueTypeEnum.DELIVERED,\n tag: $scope.getChildTranslationKey(PackageTimeValueTypeEnum.DELIVERED)\n }];\n $scope.chosenTimeValueType = $scope.timeValueTypes[0];\n $scope.sortReverseFn = function () {\n if ($scope.lastSortCol === $scope.sortCol && !$scope.sortReverse) {\n $scope.sortReverse = true;\n } else {\n $scope.lastSortCol = $scope.sortCol;\n $scope.sortReverse = false;\n }\n };\n var selected = [];\n $rootScope.reloadTable = function (reloadPackageCollectionPackageTable) {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) return;\n $scope.selectedAll = false;\n $scope.selectedAny = false;\n orderFactory.getPackageCollections(sessionMainProject.main_project_id, $scope.searchString, {\n dateTimeFrom: $scope.filterDates.from ? $scope.filterDates.from : null,\n dateTimeTo: $scope.filterDates.to ? $scope.filterDates.to : null\n }, $scope.chosenTimeValueType.id).then(function (response) {\n var data = response.data;\n $scope.package_collections = orderPackageCollectionFactory.repackageDTOArray(data);\n $scope.totalItems = $scope.package_collections.length;\n if (reloadPackageCollectionPackageTable) {\n reloadPackageCollectionPackageTable($scope.package_collections);\n }\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $rootScope.reloadTable();\n $scope.checkAll = function () {\n if (!$scope.selectedAll) {\n $scope.unCheckAll();\n return;\n }\n var filtered = getVisibleItems($scope.package_collections);\n angular.forEach(filtered, function (p) {\n p.selected = true;\n });\n $scope.updateSelection();\n };\n $scope.unCheckAll = function () {\n angular.forEach($scope.package_collections, function (p) {\n p.selected = false;\n });\n $scope.updateSelection();\n };\n $scope.updateSelection = function () {\n var oneActiveSelected = false;\n var oneInactiveSelected = false;\n var filtered = getVisibleItems($scope.package_collections);\n $scope.selectedAny = false;\n selected = [];\n angular.forEach(filtered, function (p) {\n if (!$scope.selectedAny && p.selected) {\n $scope.selectedAny = true;\n }\n if (p.selected) {\n selected.push(p);\n }\n if (!oneActiveSelected && !$scope.isCancelled(p.task_status) && p.selected) {\n oneActiveSelected = true;\n }\n if (!oneInactiveSelected && $scope.isCancelled(p.task_status) && p.selected) {\n oneInactiveSelected = true;\n }\n });\n if (!$scope.selectedAny) {\n $scope.selectedAll = false;\n }\n\n // Mixed selection\n if (oneActiveSelected && oneInactiveSelected) {\n $scope.hasMixedSelection = true;\n $scope.hasActiveSelection = true;\n $scope.hasInactiveSelection = true;\n } else {\n $scope.hasMixedSelection = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n }\n\n //Active selction\n if (oneActiveSelected && !oneInactiveSelected) {\n $scope.hasActiveSelection = true;\n } else $scope.hasActiveSelection = false;\n\n //Inactive selction\n if (!oneActiveSelected && oneInactiveSelected) {\n $scope.hasInactiveSelection = true;\n } else $scope.hasInactiveSelection = false;\n };\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.searchString = $scope.pendingSearchString;\n $scope.updateFullTableRange();\n }\n };\n $scope.updateFullTableRange = function () {\n $scope.updateSelection();\n var filtered = getVisibleItems($scope.package_collections);\n $scope.totalItems = filtered.length;\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.currentPage - 1) * $scope.itemRange;\n };\n $scope.searchForPackageCollections = function () {\n $rootScope.reloadTable();\n };\n function getVisibleItems(array) {\n var filtered = array;\n if (!$scope.showDelivered) {\n filtered = $filter('filter')(filtered, {\n task_status: '!' + TaskStatusTypeEnum.DELIVERED\n }, true);\n }\n if (!$scope.showCancelled) {\n filtered = $filter('filter')(filtered, {\n task_status: '!' + TaskStatusTypeEnum.CANCELLED\n }, true);\n }\n if ($scope.searchString) {\n filtered = $filter('filter')(filtered, $scope.searchString);\n }\n return filtered;\n }\n\n // --- MODAL - CREATE ---\n $scope.createPackageCollection = function () {\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/package_collection/package_collection_form.html',\n controller: 'PackageCollectionFormController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create_package_collection';\n },\n packageCollectionOrder: function packageCollectionOrder() {\n return {};\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n $scope.activatePackageCollections = function (isActive) {\n selected.forEach(function (data) {\n var orderDTO = orderPackageCollectionFactory.createOrderDTO(data);\n if (isActive) {\n orderFactory.reactivatePackageCollectionOrder(data.order_id, orderDTO).then(function () {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n orderFactory.cancelOrder(data.order_id, orderDTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n });\n };\n $scope.reloadPackageTable = function () {\n $rootScope.reloadTable(function (packageCollections) {\n angular.forEach(packageCollections, function (p) {\n if (p.order_number + '. ' + p.work_order_name == $scope.currentPackageCollectionName) {\n $scope.openSpecificPackageCollection($scope.currentPackageCollectionName, p);\n }\n });\n });\n };\n $scope.openSpecificPackageCollection = function (name, packageCollection) {\n $scope.lastSortCol = 'package_created';\n $scope.sortCol = 'package_created';\n $scope.sortReverse = true; // Show the newest packages first\n $scope.currentPackageCollectionName = name;\n $scope.currentPackageCollectionOrderId = packageCollection.order_id;\n $scope.showSpecificPackageCollection = true;\n $scope.getPackagesWithPackageCollectionOrderId();\n };\n $scope.getPackagesWithPackageCollectionOrderId = function () {\n //Make sure that if chosenTimeValueType is updated, sort field is as well. \n if ($scope.isTimeFilterActive()) {\n var isSame = $scope.sortCol === $scope.lastSortCol;\n $scope.setActiveTimeFilter();\n if (isSame) {\n $scope.lastSortCol = $scope.sortCol;\n }\n }\n function handleResponse(response) {\n var data = response.data;\n $scope.packages = packageFactory.repackageDTOArray(data);\n $scope.totalPackages = $scope.packages.length;\n }\n ;\n packageFactory.getPackagesWithFilter({\n dateTimeFrom: $scope.filterDates.from ? $scope.filterDates.from : null,\n dateTimeTo: $scope.filterDates.to ? $scope.filterDates.to : null\n }, $scope.chosenTimeValueType.id, $scope.searchString, $scope.currentPackageCollectionOrderId).then(handleResponse, function (error) {\n errorService.handleError(error);\n });\n };\n $scope.filterByDate = function () {\n $scope.getPackagesWithPackageCollectionOrderId();\n };\n $scope.closeSpecificPackageCollection = function () {\n $scope.lastSortCol = 'valid_to';\n $scope.sortCol = 'valid_to';\n $scope.sortReverse = false; // Show the collection orders that are closest to needing renewal first.\n $scope.packages = [];\n $scope.currentPackageCollectionName = '';\n $scope.showSpecificPackageCollection = false;\n $scope.totalPackages = 0;\n $scope.totalItems = $scope.package_collections.length;\n };\n $scope.isConfirmedOrLater = function (task_status) {\n return taskStatusService.isConfirmedOrLater(task_status);\n };\n $scope.isConfirmed = function (task_status) {\n return taskStatusService.isConfirmed(task_status);\n };\n $scope.isNotified = function (task_status) {\n return taskStatusService.isNotified(task_status);\n };\n $scope.isCancelled = function (task_status) {\n return taskStatusService.isCancelled(task_status);\n };\n $scope.isDelivered = function (task_status) {\n return taskStatusService.isDelivered(task_status);\n };\n\n // --- MODAL - VIEW PackageCollection ---\n $scope.viewPackageCollection = function (packageCollection) {\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/package_collection/package_collection_form.html',\n controller: 'PackageCollectionFormController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view_package_collection';\n },\n packageCollectionOrder: function packageCollectionOrder() {\n return packageCollection;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n $scope.setActiveTimeFilter = function () {\n switch ($scope.chosenTimeValueType.id) {\n case PackageTimeValueTypeEnum.DELIVERED:\n $scope.sortCol = 'package_delivered';\n break;\n case PackageTimeValueTypeEnum.UPDATED:\n $scope.sortCol = 'package_updated';\n break;\n default:\n $scope.sortCol = 'package_created';\n break;\n }\n };\n $scope.isTimeFilterActive = function () {\n switch ($scope.sortCol) {\n case 'package_delivered':\n case 'package_updated':\n case 'package_created':\n return true;\n default:\n return false;\n }\n };\n $scope.$on('packageCollectionsRepeatFinished', function (packageCollectionsRepeatFinishedEvent) {\n $scope.updateFullTableRange();\n });\n $scope.$on('updatedUserData', function (event) {\n $rootScope.reloadTable();\n });\n $rootScope.reloadTable();\n}]);\n'use strict';\n\napp.controller('PackageCollectionFormController', ['$uibModalInstance', 'form_type', 'packageCollectionOrder', '$scope', '$rootScope', 'errorService', 'dropdownService', 'orderFactory', 'inputValidationService', 'companyFactory', 'roleService', 'workOrderFactory', 'orderPackageCollectionFactory', 'taskStatusService', '$localStorage', '$filter', 'ngToast', function ($uibModalInstance, form_type, packageCollectionOrder, $scope, $rootScope, errorService, dropdownService, orderFactory, inputValidationService, companyFactory, roleService, workOrderFactory, orderPackageCollectionFactory, taskStatusService, $localStorage, $filter, ngToast) {\n $scope.form_type = form_type;\n $scope.isAdmin = roleService.isAdmin();\n $scope.isInternal = roleService.isInternal();\n $scope.order = packageCollectionOrder;\n $scope.loadBase = function (workOrder, clear, buildDestinationLocationPath) {\n if (clear) {\n clearForm();\n }\n $scope.order.work_order_display_name = workOrder.work_order_display_name;\n $scope.order.work_order_id = workOrder.work_order_id;\n var id = workOrder.work_order_id;\n $scope.order.specified_street_address = typeof $scope.order.address !== 'undefined' && $scope.order.address != null;\n $scope.default_address_in_use = $scope.order.specified_street_address || typeof $scope.order.location_id !== 'undefined' && $scope.order.location_id != null || typeof $scope.order.vehicle_drop_location_id !== 'undefined' && $scope.order.vehicle_drop_location_id != null;\n orderFactory.getTransshipmentFormBase(id).then(function (response) {\n var data = response.data;\n $scope.order.vehicle_drop_locations = data.VehicleDropLocations;\n $scope.destinationLocations = data.DestinationLocations;\n $scope.destinationLocationPath = [];\n var depth = findTreeDepth($scope.destinationLocations);\n fillDestinationLocationPath($scope.destinationLocationPath, depth);\n if (buildDestinationLocationPath) {\n buildPath($scope.order.location_id);\n }\n }, function (error) {\n errorService.handleError(error);\n });\n };\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) $uibModalInstance.dismiss('cancel');\n\n // Form setup.\n if (form_type === 'create_package_collection') {\n if ($scope.isInternal) {\n loadCompanies();\n }\n } else if (form_type === 'view_package_collection' || form_type === 'manage_package_collection') {\n var loadFormBaseOrder = {\n work_order_id: $scope.order.work_order_id,\n work_order_display_name: $scope.order.work_order_display_name,\n company_id: $scope.order.company_id,\n company_name: $scope.order.company_name\n };\n $scope.loadBase(loadFormBaseOrder, false, true);\n }\n function loadCompanies() {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) {\n errorService.handleError('No session main project');\n return;\n }\n companyFactory.getCompanies(false, sessionMainProject.division_id).then(function (response) {\n var data = response.data;\n $scope.companies = companyFactory.repackageCompanyDTOArray(data);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n function loadWorkOrdersByCompany(companyId) {\n $scope.work_orders = [];\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) {\n errorService.handleError('No session main project');\n return;\n }\n workOrderFactory.getWorkOrdersByCompanyId(companyId, sessionMainProject.main_project_id).then(function (response) {\n var workOrderDTOArray = response.data;\n $scope.work_orders = workOrderFactory.repackageWorkOrderDTOArray(workOrderDTOArray);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n ;\n function clearWorkOrder() {\n $scope.order.work_order_display_name = '';\n $scope.order.work_order_id = -1;\n }\n ;\n $scope.setBaseCompany = function (company) {\n clearWorkOrder();\n $scope.order.company_name = company.company_name;\n $scope.order.company_id = company.company_id; // Not really needed, since it is not sent to backend.\n loadWorkOrdersByCompany(company.company_id);\n };\n\n // Finalizing or exiting form\n $scope.create = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var finalDestination = getDestination();\n $scope.order.location_id = finalDestination.location_id;\n $scope.order.location_name = finalDestination.location_name;\n var DTO = orderPackageCollectionFactory.createOrderDTO($scope.order);\n orderFactory.createOrder(DTO, null, $scope.formGuid).then(function (response) {\n $rootScope.reloadTable();\n $uibModalInstance.close();\n }, function (error) {\n if (error.status === 409) {\n ngToast.warning(\"Kunde inte spara formuläret, ordern finns redan.\");\n } else {\n ngToast.danger(\"Det gick inte att spara formuläret.\");\n }\n errorService.handleError(error);\n });\n };\n $scope.activation = function (isActive) {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n if (isActive) {\n // TODO: Cannot activate this order type.\n } else {\n var DTO = orderPackageCollectionFactory.createOrderDTO($scope.order);\n orderFactory.cancelOrder($scope.order.order_id, DTO).then(function (response) {\n $rootScope.reloadTable();\n $uibModalInstance.close();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n };\n $scope.update = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var finalDestination = getDestination();\n $scope.order.location_id = finalDestination.location_id;\n $scope.order.location_name = finalDestination.location_name;\n var DTO = orderPackageCollectionFactory.createOrderDTO($scope.order);\n orderFactory.updateOrder($scope.order.order_id, DTO).then(function (response) {\n $rootScope.reloadTable();\n $uibModalInstance.close();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n $scope.isValidDate = function (input) {\n return inputValidationService.isValidDate(input);\n };\n $scope.isConfirmedOrLater = function (task_status) {\n return taskStatusService.isConfirmedOrLater(task_status);\n };\n $scope.isCancelled = function (task_status) {\n return taskStatusService.isCancelled(task_status);\n };\n $scope.validateForm = function () {\n var selectedDestination = getDestination();\n var baseIsValid = inputValidationService.isValidInput($scope.order.package_collection_name) && inputValidationService.isValidDate($scope.order.valid_from) && inputValidationService.isValidDate($scope.order.valid_to);\n var destinationIsValid = inputValidationService.isValidInput(selectedDestination) && inputValidationService.isValidInput(selectedDestination.location_name) && inputValidationService.isValidInput(selectedDestination.is_scannable) && selectedDestination.is_scannable !== false;\n var destinationIsEmptyButVehicleDropLocationIsValid = selectedDestination.location_id === null && selectedDestination.location_name === null && inputValidationService.isValidInput($scope.order.vehicle_drop_location_id) && inputValidationService.isValidInput($scope.order.vehicle_drop_location_name);\n var locationIsValidOrIrrelevant = !$scope.default_address_in_use || $scope.order.specified_street_address || destinationIsValid || destinationIsEmptyButVehicleDropLocationIsValid;\n var streetAddressIsValidOrIrrelevant = !$scope.default_address_in_use || !$scope.order.specified_street_address || inputValidationService.isValidInput($scope.order.address) && inputValidationService.isValidInput($scope.order.zip_code) && inputValidationService.isValidInput($scope.order.city);\n $scope.formValid = baseIsValid && locationIsValidOrIrrelevant && streetAddressIsValidOrIrrelevant;\n return $scope.formValid;\n };\n $scope.initDateTimeEvents = function () {\n // Init date time picker\n $('#package-collection-datetimepicker1').datetimepicker({\n format: 'YYYY-MM-DD',\n locale: 'sv'\n });\n $('#package-collection-datetimepicker1').data().DateTimePicker.stepping(15);\n $('#package-collection-datetimepicker2').datetimepicker({\n format: 'YYYY-MM-DD',\n locale: 'sv'\n });\n $('#package-collection-datetimepicker2').data().DateTimePicker.stepping(15);\n $('#package-collection-datetimepicker1').on('dp.change', function (ev) {\n $scope.order.valid_from = $('#valid_from').val();\n if (!$scope.$$phase) {\n $scope.$apply(); //$digest or $apply\n }\n });\n\n $('#package-collection-datetimepicker2').on('dp.change', function (ev) {\n $scope.order.valid_to = $('#valid_to').val();\n if (!$scope.$$phase) {\n $scope.$apply(); //$digest or $apply\n }\n });\n };\n\n $scope.openDropdown = dropdownService.openDropdown;\n function clearForm() {\n $scope.order.specified_street_address = false;\n $scope.validated = false;\n }\n $scope.toggleDestinationInformation = function (specifiedAddress, editable) {\n if (!editable) return;\n if (specifiedAddress) {\n delete $scope.order.vehicle_drop_location_id;\n delete $scope.order.vehicle_drop_location_name;\n clearChildNodes(0);\n } else {\n delete $scope.order.address;\n delete $scope.order.city;\n delete $scope.order.zip_code;\n }\n };\n $scope.setVehicleDropLocation = function (dropLocation) {\n $scope.order.vehicle_drop_location_name = dropLocation.Name;\n $scope.order.vehicle_drop_location_id = dropLocation.LocationId;\n $scope.order.filterByProjectId = dropLocation.ProjectId;\n clearChildNodes(0);\n };\n\n // Destination functions START ---\n function buildPath(locationId) {\n // find base\n var currentBase;\n angular.forEach($scope.destinationLocations, function (loc) {\n if (loc.LocationId === locationId) {\n currentBase = loc;\n }\n });\n if (typeof currentBase === 'undefined') return;\n\n // Set Dropdown\n $scope.destinationLocationPath[currentBase.Level - 2] = {\n level: currentBase.Level,\n location_id: currentBase.LocationId,\n location_name: currentBase.Name,\n is_scannable: currentBase.IsScannable,\n is_destination: true\n };\n do {\n // find parent\n var parent;\n angular.forEach($scope.destinationLocations, function (loc) {\n if (loc.LocationId === currentBase.ParentLocationId) {\n parent = loc;\n }\n });\n var prevBase = currentBase;\n currentBase = parent;\n\n // Set dropdown\n if (typeof currentBase !== 'undefined') {\n $scope.destinationLocationPath[currentBase.Level - 2] = {\n level: currentBase.Level,\n location_id: currentBase.LocationId,\n location_name: currentBase.Name,\n is_scannable: currentBase.IsScannable\n };\n }\n } while (typeof currentBase !== 'undefined' && currentBase.Level !== prevBase.Level);\n }\n function findTreeDepth(destinationLocations) {\n var depth = 0;\n angular.forEach(destinationLocations, function (location) {\n if (location.Level > depth) {\n depth = location.Level;\n }\n });\n return depth;\n }\n function fillDestinationLocationPath(destinationLocationPath, depth) {\n for (var i = 0; i < depth; i++) {\n destinationLocationPath.push({\n level: i + 1,\n location_name: '',\n is_destination: false\n });\n }\n }\n function clearChildNodes(level) {\n angular.forEach($scope.destinationLocationPath, function (loc) {\n if (loc.level > level) {\n loc.location_name = '';\n delete loc.location_id;\n delete loc.is_destination;\n delete loc.is_scannable;\n }\n });\n clearDestinations();\n }\n $scope.parentHasChildren = function (parent) {\n if (typeof parent === 'undefined') return true;\n var hasChildren = false;\n angular.forEach($scope.destinationLocations, function (loc) {\n if (loc.ParentLocationId === parent.location_id || loc.ParentLocationId === parent.LocationId) {\n hasChildren = true;\n }\n });\n return hasChildren;\n };\n function clearDestinations() {\n angular.forEach($scope.destinationLocationPath, function (path) {\n path.is_destination = false;\n });\n }\n function getDestination() {\n var outPath = null;\n angular.forEach($scope.destinationLocationPath, function (path) {\n if (path.is_destination) {\n outPath = path;\n }\n });\n return outPath ? outPath : {\n location_id: null,\n location_name: null\n };\n }\n $scope.updatePath = function (path, location) {\n path.location_name = location.Name;\n path.location_id = location.LocationId;\n path.is_scannable = location.IsScannable;\n clearChildNodes(path.level);\n clearDestinations();\n path.is_destination = true;\n };\n $scope.checkDestination = function (path, disabled) {\n if (disabled) return;\n clearChildNodes(path.level);\n clearDestinations();\n path.is_destination = true;\n };\n\n // Destination END ---\n}]);\ncontrollers.controller('LoadingListInstanceController', ['$uibModalInstance', '$scope', 'delivery', 'generalHelperService', function ($uibModalInstance, $scope, delivery, generalHelperService) {\n $scope.delivery = delivery;\n $scope.delivery_orders = [];\n (function loadDeliveryOrders() {\n angular.forEach($scope.delivery.delivery_locations, function (deliveryLocation) {\n angular.forEach(deliveryLocation.orders, function (order) {\n $scope.delivery_orders.push(order);\n });\n });\n })();\n $scope.calculateItemCount = function () {\n var totalCount = 0;\n angular.forEach($scope.delivery_orders, function (order) {\n totalCount += order.total_count;\n });\n return totalCount;\n };\n $scope.calculateTotalWeight = function () {\n var weight = 0;\n angular.forEach($scope.delivery_orders, function (order) {\n weight += order.total_weight;\n });\n return weight;\n };\n $scope.calculateOrderWeight = function (order) {\n return generalHelperService.calculateOrderWeight(order);\n };\n $scope.printDiv = function (divId) {\n generalHelperService.printDiv(divId);\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}]);\n'use strict';\n\ncontrollers.controller('PlannerController', ['$uibModal', '$scope', '$rootScope', '$filter', 'orderFactory', '$translate', '$localStorage', 'routeFactory', 'deliveryFactory', 'vehicleFactory', 'generalHelperService', 'errorService', 'taskStatusService', 'roleService', 'inputValidationService', 'orderFormModalService', function ($uibModal, $scope, $rootScope, $filter, orderFactory, $translate, $localStorage, routeFactory, deliveryFactory, vehicleFactory, generalHelperService, errorService, taskStatusService, roleService, inputValidationService, orderFormModalService) {\n $scope.isDisabled = !$localStorage.user.session_main_project.is_plan_transport_function_enabled;\n $scope.planForDate = generalHelperService.dateToDateString(new Date());\n $scope.currentShipping = null;\n $scope.statusPlanning = DeliveryStatusTypeEnum.PLANNING;\n $scope.innerRange = 5;\n $scope.currentPage = 1;\n $scope.itemRange = 6;\n $scope.itemRangeBottom = 0;\n $scope.itemRangeTop = $scope.itemRange - 1;\n $scope.selectedAny = false;\n $scope.selectedAll = false;\n $scope.hasMixedSelection = false;\n $scope.selected = [];\n $scope.includeAllStatuses = false;\n $scope.isPlanForDateChecked = false;\n $scope.routes = [];\n $scope.identifyRoles = function () {\n $scope.isAdmin = roleService.isAdmin();\n $scope.isServicenter = roleService.isServicenter();\n $scope.isProjectOwner = roleService.isProjectOwner();\n $scope.isWarehousePlanner = roleService.isWarehousePlanner();\n $scope.isWarehouseOperator = roleService.isWarehouseOperator();\n $scope.isCustomer = roleService.isCustomer();\n };\n $scope.identifyRoles();\n $scope.reloadUnDelivered = function () {\n $scope.selectedAll = false;\n $scope.selectedAny = false;\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) return;\n $scope.totalItems = 0;\n orderFactory.getUndeliveredOrders(sessionMainProject.main_project_id, $scope.includeAllStatuses).then(function (response) {\n var orderDtoArray = response.data;\n $scope.orders = orderFactory.repackageDTOArray(orderDtoArray);\n $scope.orders = $filter('orderBy')($scope.orders, 'time_i', false);\n $scope.orders = $filter('orderBy')($scope.orders, 'date_i', false);\n $scope.totalItems = $scope.orders.length;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $rootScope.reloadTable = function () {\n $scope.reloadPlannerTablesAndLists();\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.currentPage - 1) * $scope.itemRange;\n };\n\n // Load routes\n $scope.reloadRoutes = function () {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) return;\n routeFactory.getRouteTemplatesByMainProjectId(false, sessionMainProject.main_project_id).then(function (response) {\n var routeTemplateDtos = response.data;\n $scope.routeTemplates = routeFactory.repackageDTOArray(routeTemplateDtos);\n $scope.updateRouteList();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n\n // Load deliveries\n $scope.reloadDeliveries = function () {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) return;\n deliveryFactory.getDeliveriesByDate($scope.planForDate, sessionMainProject.main_project_id).then(function (response) {\n var deliveryDtos = response.data;\n $scope.deliveries = [];\n $scope.route_deliveries = [];\n $scope.transport_deliveries = [];\n angular.forEach(deliveryDtos, function (deliveryDTO) {\n var delivery = deliveryFactory.repackageDTO(deliveryDTO);\n $scope.deliveries.push(delivery);\n if (deliveryDTO.DeliveryTypeId === DeliveryTypeEnum.ROUTE_DELIVERY) {\n $scope.route_deliveries.push(delivery);\n } else if (deliveryDTO.DeliveryTypeId === DeliveryTypeEnum.INTERNAL_TRANSPORT_DELIVERY || deliveryDTO.DeliveryTypeId === DeliveryTypeEnum.EXTERNAL_TRANSPORT_DELIVERY) {\n $scope.transport_deliveries.push(delivery);\n }\n });\n $scope.route_deliveries = $filter('orderBy')($scope.route_deliveries, 'delivery_status_type_id');\n $scope.transport_deliveries = $filter('orderBy')($scope.transport_deliveries, 'delivery_status_type_id');\n $scope.updateRouteList();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $scope.reloadPlannerTablesAndLists = function () {\n $scope.reloadUnDelivered();\n $scope.reloadDeliveries();\n $scope.reloadRoutes();\n if (!$scope.$$phase) {\n $scope.$apply();\n }\n };\n $scope.reloadPlannerTablesAndLists();\n $scope.updateRouteList = function () {\n var routeDeliveriesForDate = $filter('filter')($scope.route_deliveries, {\n delivery_date: $scope.planForDate\n });\n var deliveriesInPlanning = $filter('filter')(routeDeliveriesForDate, {\n delivery_status_type_id: DeliveryStatusTypeEnum.PLANNING\n }, true); // Filter orders deliveries not in planning state.\n\n $scope.routes = $scope.routeTemplates ? $scope.routeTemplates.concat(deliveriesInPlanning) : $scope.routeTemplates;\n $scope.routes = $filter('orderBy')($scope.routes, 'is_template', false);\n };\n\n // Load vehicles\n vehicleFactory.getVehicles(false).then(function (response) {\n var data = response.data;\n $scope.vehicles = vehicleFactory.repackageDTOArray(data);\n }, function (error) {\n errorService.handleError(error);\n });\n\n // Routes\n $scope.createRoute = function () {\n $scope.checkPlanForDate();\n if (!$scope.isPlanForDateSet) {\n return;\n }\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/planner/route_delivery.html',\n controller: 'SpecifyRouteInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n newRoute: function newRoute() {\n return true;\n },\n delivery: function delivery() {\n return {};\n },\n hasTime: function hasTime() {\n return false;\n },\n hasVehicle: function hasVehicle() {\n return false;\n },\n vehicles: function vehicles() {\n return $scope.vehicles;\n }\n }\n });\n modalInstance.result.then(function (delivery) {\n $scope.assignToNewRoute(delivery);\n });\n };\n $scope.assignToNewRoute = function (delivery) {\n var timeType = 0;\n if (typeof delivery.time !== 'undefined' && delivery.time !== '') {\n timeType = DeliveryTimeTypeEnum.SPECIFIC;\n } else if (typeof delivery.forenoon !== 'undefined' && delivery.forenoon) {\n timeType = DeliveryTimeTypeEnum.FORENOON;\n } else if (typeof delivery.afternoon !== 'undefined' && delivery.afternoon) {\n timeType = DeliveryTimeTypeEnum.AFTERNOON;\n }\n var orderIds = [];\n angular.forEach($scope.selected, function (order) {\n orderIds.push(order.order_id);\n });\n var deliveryDate = $scope.planForDate;\n var routeDTO = {\n \"Name\": delivery.route_name,\n \"Time\": delivery.time,\n \"VehicleId\": delivery.vehicle_id,\n \"DeliveryTimeTypeId\": timeType,\n \"IsActive\": true\n };\n var assignOrdersToNewRouteDeliveryDTO = {\n 'OrderIds': orderIds,\n 'DeliveryDate': deliveryDate,\n 'Route': routeDTO\n };\n\n // Assigning first by creating new route\n deliveryFactory.assignOrdersToNewRoute(assignOrdersToNewRouteDeliveryDTO).then(function (response) {\n $scope.reloadPlannerTablesAndLists();\n $scope.uncheckAll();\n });\n };\n $scope.assignToRoute = function (route, isDisabled) {\n $scope.showShippingError = isDisabled;\n $scope.checkPlanForDate();\n if (!$scope.isPlanForDateSet || isDisabled) {\n return;\n }\n var deliveryDate = $scope.planForDate;\n var orderIds = [];\n angular.forEach($scope.selected, function (order) {\n orderIds.push(order.order_id);\n });\n\n // If template then create clone\n if (route.is_template) {\n // TODO: Modifying the input object, may cause problems for caller?\n route.is_template = false;\n route.source_template_id = route.route_id;\n delete route.route_id;\n var clonedRouteDTO = routeFactory.createDTO(route);\n routeFactory.createRoute(clonedRouteDTO).then(function (response) {\n var routeDTO = response.data;\n var assignOrdersToRouteDeliveryDTO = {\n 'OrderIds': orderIds,\n 'RouteId': routeDTO.RouteId,\n 'DeliveryDate': deliveryDate\n };\n\n // Assign to created route\n deliveryFactory.assignOrdersToRoute(assignOrdersToRouteDeliveryDTO).then(function (response) {\n $scope.reloadPlannerTablesAndLists();\n }, function (error) {\n errorService.handleError(error);\n });\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n var routeId = route.route_id;\n var assignOrdersToRouteDeliveryDTO = {\n 'OrderIds': orderIds,\n 'RouteId': routeId,\n 'DeliveryDate': deliveryDate\n };\n deliveryFactory.assignOrdersToRoute(assignOrdersToRouteDeliveryDTO).then(function (response) {\n $scope.reloadPlannerTablesAndLists();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n $scope.uncheckAll();\n };\n $scope.updateRouteDelivery = function (_delivery) {\n if (!$scope.isDeliveryStatusPlanning(_delivery.delivery_status_type_id)) return;\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/planner/route_delivery.html',\n controller: 'SpecifyRouteInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n newRoute: function newRoute() {\n return false;\n },\n delivery: function delivery() {\n return _delivery;\n },\n hasTime: function hasTime() {\n return false;\n },\n hasVehicle: function hasVehicle() {\n return false;\n },\n vehicles: function vehicles() {\n return $scope.vehicles;\n }\n }\n });\n modalInstance.result.then(function (updatedDelivery) {\n var deliveryDTO = deliveryFactory.createDTO(updatedDelivery);\n deliveryFactory.updateDelivery(updatedDelivery.delivery_id, deliveryDTO).then(function (response) {\n $scope.reloadPlannerTablesAndLists();\n $scope.uncheckAll();\n }, function (error) {\n $scope.reloadPlannerTablesAndLists();\n errorService.handleError(error);\n });\n });\n };\n\n // Transports\n $scope.createTransportDelivery = function (_source) {\n $scope.checkPlanForDate();\n if (!$scope.isPlanForDateSet) {\n return;\n }\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/planner/transport_delivery.html',\n controller: 'SpecifyTransportDeliveryInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n source: function source() {\n return _source;\n },\n delivery: function delivery() {\n return {};\n },\n vehicles: function vehicles() {\n return $scope.vehicles;\n }\n }\n });\n modalInstance.result.then(function (results) {\n if (results !== null) {\n if (_source === 'internal_transport') {\n $scope.assignToNewInternalTransport(results);\n } else if (_source === 'external_transport') {\n $scope.assignToNewExternalTransport(results);\n }\n }\n });\n };\n $scope.assignToNewInternalTransport = function (delivery) {\n var orderIds = [];\n angular.forEach($scope.selected, function (order) {\n orderIds.push(order.order_id);\n });\n var DTO = {\n \"ShippingId\": $scope.selected[0].shipping_id,\n \"Time\": delivery.time,\n \"DeliveryDate\": $scope.planForDate + 'T00:00:00',\n \"VehicleId\": delivery.vehicle_id\n };\n var outObj = {\n 'OrderIds': orderIds,\n 'InternalTransportDelivery': DTO\n };\n deliveryFactory.assignOrdersToNewInternalTransport(outObj).then(function (response) {\n $scope.reloadPlannerTablesAndLists();\n $scope.uncheckAll();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $scope.assignToNewExternalTransport = function (delivery) {\n var orderIds = [];\n angular.forEach($scope.selected, function (order) {\n orderIds.push(order.order_id);\n });\n var DTO = {\n \"ShippingId\": $scope.selected[0].shipping_id,\n \"DeliveryDate\": $scope.planForDate + 'T00:00:00',\n \"Time\": delivery.departure_time,\n \"Capacity\": delivery.capacity\n };\n var outObj = {\n 'OrderIds': orderIds,\n 'ExternalTransportDelivery': DTO\n };\n deliveryFactory.assignOrdersToNewExternalTransport(outObj).then(function (response) {\n $scope.reloadPlannerTablesAndLists();\n $scope.uncheckAll();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $scope.assignToTransport = function (deliveryId, isDisabled) {\n $scope.checkPlanForDate();\n $scope.showShippingError = isDisabled;\n if (!$scope.isPlanForDateSet || isDisabled) {\n return;\n }\n var orderIds = [];\n angular.forEach($scope.selected, function (order) {\n orderIds.push(order.order_id);\n });\n var outObj = {\n 'OrderIds': orderIds,\n 'DeliveryId': deliveryId\n };\n deliveryFactory.assignOrdersTransport(outObj).then(function (response) {\n var data = response.data;\n $scope.reloadPlannerTablesAndLists();\n $scope.uncheckAll();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $scope.updateTransportDelivery = function (_delivery2) {\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/planner/transport_delivery.html',\n controller: 'SpecifyTransportDeliveryInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n source: function source() {\n return 'update';\n },\n delivery: function delivery() {\n return _delivery2;\n },\n vehicles: function vehicles() {\n return $scope.vehicles;\n }\n }\n });\n modalInstance.result.then(function (delivery) {\n var deliveryDTO = deliveryFactory.createDTO(delivery);\n deliveryFactory.updateDelivery(delivery.delivery_id, deliveryDTO).then(function (response) {\n $scope.reloadPlannerTablesAndLists();\n }, function (error) {\n $scope.reloadPlannerTablesAndLists();\n errorService.handleError(error);\n });\n });\n };\n\n // Delivery\n $scope.confirmDelivery = function (delivery) {\n deliveryFactory.confirmDelivery(delivery.delivery_id).then(function (response) {\n $scope.reloadPlannerTablesAndLists();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $scope.deleteDelivery = function (id) {\n deliveryFactory.deleteDelivery(id).then(function (response) {\n $scope.reloadPlannerTablesAndLists();\n $scope.uncheckAll();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $scope.deliverDelivery = function (id) {\n deliveryFactory.deliverDelivery(id).then(function (response) {\n $scope.reloadPlannerTablesAndLists();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $scope.removeOrderFromDelivery = function (orderId) {\n orderFactory.removeOrderFromDelivery(orderId).then(function (response) {\n $scope.reloadPlannerTablesAndLists();\n $scope.uncheckAll();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $scope.checkPlanForDate = function () {\n $scope.isPlanForDateChecked = true;\n var dateFormat = /\\d{4}-\\d{2}-\\d{2}/i;\n var isCorrectFormat = dateFormat.test($scope.planForDate);\n if (isCorrectFormat) {\n $scope.isPlanForDateSet = true;\n } else $scope.isPlanForDateSet = false;\n };\n $scope.isDirectOrder = function (orderType) {\n return OrderTypeEnum.DIRECT_DELIVERY === orderType;\n };\n $scope.isDelivered = function (taskStatusId) {\n return taskStatusService.isDelivered(taskStatusId);\n };\n $scope.isConfirmedOrLater = function (taskStatusId) {\n return taskStatusService.isConfirmedOrLater(taskStatusId);\n };\n $scope.isNotified = function (taskStatusId) {\n return taskStatusService.isNotified(taskStatusId);\n };\n $scope.isCancelled = function (taskStatusId) {\n return taskStatusService.isCancelled(taskStatusId);\n };\n $scope.isDeliveryStatusPlanning = function (statusID) {\n return statusID === DeliveryStatusTypeEnum.PLANNING;\n };\n $scope.isDeliveryStatusConfirmed = function (statusID) {\n return statusID === DeliveryStatusTypeEnum.CONFIRMED;\n };\n $scope.isDeliveryStatusDelivered = function (statusID) {\n return statusID === DeliveryStatusTypeEnum.DELIVERED;\n };\n $scope.calculateOrderWeight = function (order) {\n return generalHelperService.calculateOrderWeight(order);\n };\n $scope.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n function loadMonthsFromLanguage() {\n var translations = $translate.instant(['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']);\n var months = [];\n months.push(translations['JAN']);\n months.push(translations['FEB']);\n months.push(translations['MAR']);\n months.push(translations['APR']);\n months.push(translations['MAY']);\n months.push(translations['JUN']);\n months.push(translations['JUL']);\n months.push(translations['AUG']);\n months.push(translations['SEP']);\n months.push(translations['OCT']);\n months.push(translations['NOV']);\n months.push(translations['DEC']);\n return months;\n }\n $scope.setCurrentShipping = function (shippingId) {\n if ($scope.selectedAny) $scope.currentShipping = shippingId;else $scope.currentShipping = null;\n };\n\n // Doesnt only set true. unchecks all if $scope.selectAll === false\n $scope.checkAll = function () {\n $scope.selected = [];\n var currentShippingInitiated = false;\n angular.forEach($scope.orders, function (p) {\n var hasShipping = inputValidationService.isValidInput(p.shipping_name);\n if (!currentShippingInitiated && hasShipping) {\n $scope.currentShipping = p.shipping_id;\n currentShippingInitiated = true;\n }\n p.selected = $scope.selectedAll && hasShipping && p.shipping_id === $scope.currentShipping;\n if (p.selected) $scope.selected.push(p);\n });\n $scope.updateSelection();\n };\n $scope.uncheckAll = function () {\n $scope.selected = [];\n angular.forEach($scope.orders, function (order) {\n order.selected = false;\n });\n $scope.updateSelection();\n };\n $scope.updateSelection = function () {\n $scope.selectedAny = false;\n $scope.selected = [];\n angular.forEach($scope.orders, function (p) {\n if (!$scope.selectedAny && p.selected) {\n $scope.selectedAny = true;\n }\n if (p.selected) {\n $scope.selected.push(p);\n }\n });\n if (!$scope.selectedAny) {\n $scope.selectedAll = false;\n delete $scope.currentShipping;\n }\n };\n $scope.viewOrder = function (order_type, id, copy) {\n if (id === -1) {\n return;\n }\n var orderFormPromise;\n if ($scope.isAdmin) {\n orderFormPromise = orderFormModalService.openManage(id, order_type, copy);\n } else {\n orderFormPromise = orderFormModalService.openView(id, order_type, copy);\n }\n orderFormPromise.then(function (results) {\n if (results.copy) {\n $scope.viewOrder(order_type, id, true);\n }\n if (results.success) {\n $rootScope.reloadTable();\n }\n });\n };\n $scope.openLoadingList = function (_delivery3) {\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/planner/loading_list.html',\n controller: 'LoadingListInstanceController',\n size: 'xlg',\n windowClass: 'sp-modal-window',\n resolve: {\n delivery: function delivery() {\n return _delivery3;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n $scope.displayDateSeparator = function (order1, order2) {\n if (order2 === null || typeof order2 === 'undefined') {\n return true;\n }\n return order1.date_i !== order2.date_i;\n };\n $scope.displayDate = function (date) {\n var months = loadMonthsFromLanguage();\n var today = new Date().toISOString().split('T')[0];\n var pDate = new Date(date);\n return (today === date ? $translate.instant('TODAY') + ' ' : '') + pDate.getDate() + ' ' + months[pDate.getMonth()];\n };\n $scope.isToday = function (date) {\n var today = new Date().toISOString().split('T')[0];\n return date == today;\n };\n $scope.isBeforeToday = function (date) {\n var today = new Date().toISOString().split('T')[0];\n return date < today;\n };\n $scope.generateFirstColorClass = function (id) {\n return generalHelperService.generateFirstColorClass(id);\n };\n $scope.generateSecondColorClass = function (id) {\n return generalHelperService.generateSecondColorClass(id);\n };\n $scope.initDateTimeEvents = function () {\n // Init Date time picker\n $('#planner-datetimepicker1').datetimepicker({\n locale: 'sv',\n format: 'YYYY-MM-DD',\n widgetPositioning: {\n horizontal: 'auto',\n vertical: 'bottom'\n }\n });\n $('#planner-datetimepicker1').on('dp.change', function (ev) {\n var dateInCalender = $('#planner-plan-for-date').val();\n if ($scope.planForDate === dateInCalender) return; // Don't do anything if the user just opened the calender view\n $scope.planForDate = dateInCalender;\n $scope.reloadDeliveries();\n $scope.checkPlanForDate();\n $scope.updateRouteList();\n });\n };\n $scope.$on('updatedUserData', function (event) {\n $scope.isDisabled = !$localStorage.user.session_main_project.is_plan_transport_function_enabled;\n $rootScope.reloadTable();\n $scope.reloadRoutes();\n $scope.reloadDeliveries();\n $scope.uncheckAll();\n });\n $scope.$on('orderStatusChanged', function () {\n $rootScope.reloadTable();\n $scope.reloadRoutes();\n $scope.reloadDeliveries();\n $scope.uncheckAll();\n });\n}]);\ncontrollers.controller(\"SpecifyTransportDeliveryInstanceController\", ['$scope', '$uibModalInstance', 'source', 'delivery', 'vehicles', 'shippingFactory', 'vehicleTypeFactory', 'errorService', 'inputValidationService', '$filter', '$localStorage', function ($scope, $uibModalInstance, source, delivery, vehicles, shippingFactory, vehicleTypeFactory, errorService, inputValidationService, $filter, $localStorage) {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!$scope.sessionMainProject) $uibModalInstance.dismiss('No session main project available');\n $scope.source = source; // External/internal\n $scope.vehicles = $filter('filter')(vehicles, {\n main_project_id: sessionMainProject.main_project_id\n }, true);\n $scope.delivery = delivery;\n if ($scope.delivery.capacity) {\n $scope.delivery.vehicle_capacity_long = $scope.delivery.capacity + ' ton.';\n }\n vehicleTypeFactory.getVehicleTypes(sessionMainProject.main_project_id, false).then(function (response) {\n var data = response.data;\n var vehicleTypes = vehicleTypeFactory.repackageDTOArray(data);\n $scope.vehicle_types = $filter('filter')(vehicleTypes, {\n main_project_id: sessionMainProject.main_project_id\n }, true);\n }, function (error) {\n errorService.handleError(error);\n });\n function validInput(input) {\n return inputValidationService.isValidInput(input);\n }\n $scope.validateForm = function () {\n $scope.validated = true;\n if ($scope.source === 'internal_transport') {\n if (validInput($scope.delivery.vehicle_name)) {\n $scope.isFormValid = true;\n } else $scope.isFormValid = false;\n } else if ($scope.source === 'external_transport') {\n $scope.isFormValid = true;\n } else if ($scope.source === 'update') $scope.isFormValid = true;\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss();\n };\n $scope.save = function () {\n $scope.validateForm();\n if ($scope.isFormValid) {\n $uibModalInstance.close($scope.delivery);\n }\n };\n $scope.isInternalTransportUpdate = function (delivery_type_id) {\n return DeliveryTypeEnum.INTERNAL_TRANSPORT_DELIVERY === delivery_type_id;\n };\n $scope.isExternalTransportUpdate = function (delivery_type_id) {\n return DeliveryTypeEnum.EXTERNAL_TRANSPORT_DELIVERY === delivery_type_id;\n };\n $scope.initDateTimeEvents = function () {\n // Init date time picker\n $('#other-delivery-datetimepicker1').datetimepicker({\n locale: 'sv',\n format: 'LT',\n widgetPositioning: {\n horizontal: 'auto',\n vertical: 'bottom'\n }\n });\n $('#other-delivery-datetimepicker1').data().DateTimePicker.stepping(15);\n $('#other-delivery-datetimepicker1').on('dp.change', function (ev) {\n $scope.delivery.time = $('#other-departure-time').val();\n if (!$scope.$$phase) {\n //$digest or $apply\n $scope.$apply();\n }\n });\n };\n}]);\ncontrollers.controller(\"SpecifyRouteInstanceController\", ['$scope', '$uibModalInstance', 'newRoute', 'delivery', 'hasTime', 'hasVehicle', 'vehicles', 'inputValidationService', '$localStorage', '$filter', function ($scope, $uibModalInstance, newRoute, delivery, hasTime, hasVehicle, vehicles, inputValidationService, $localStorage, $filter) {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!$scope.sessionMainProject) $uibModalInstance.dismiss('No session main project available');\n $scope.newRoute = newRoute;\n $scope.hasTime = hasTime;\n $scope.hasVehicle = hasVehicle;\n $scope.vehicles = $filter('filter')(vehicles, {\n main_project_id: sessionMainProject.main_project_id\n }, true);\n $scope.delivery = delivery;\n $scope.validated = false;\n $scope.isFormValid = false;\n function validInput(input) {\n return inputValidationService.isValidInput(input);\n }\n $scope.validateForm = function () {\n $scope.validated = true;\n if ($scope.newRoute) {\n if (validInput($scope.delivery.route_name) && ($scope.delivery.forenoon || $scope.delivery.afternoon || validInput($scope.delivery.time))) {\n $scope.isFormValid = true;\n } else $scope.isFormValid = false;\n } else $scope.isFormValid = true;\n };\n\n // Request to check checkbox\n $scope.setCheckbox = function (period) {\n if (period === 'AM' && $scope.delivery.afternoon) {\n $scope.delivery.afternoon = false;\n }\n if (period === 'PM' && $scope.delivery.forenoon) {\n $scope.delivery.forenoon = false;\n }\n $scope.delivery.time = '';\n };\n $scope.setTime = function () {\n $scope.delivery.forenoon = false;\n $scope.delivery.afternoon = false;\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss();\n };\n $scope.save = function () {\n $scope.validateForm();\n if ($scope.isFormValid) $uibModalInstance.close($scope.delivery);\n };\n $scope.initDateTimeEvents = function () {\n // Init Date time picker\n $('#route-delivery-datetimepicker1').datetimepicker({\n locale: 'sv',\n format: 'LT',\n widgetPositioning: {\n horizontal: 'auto',\n vertical: 'bottom'\n }\n });\n $('#route-delivery-datetimepicker1').data().DateTimePicker.stepping(15);\n $('#route-delivery-datetimepicker1').on('dp.change', function (ev) {\n $scope.delivery.time = $('#route-time').val();\n $scope.delivery.forenoon = false;\n $scope.delivery.afternoon = false;\n if (!$scope.$$phase) {\n //$digest cycle\n $scope.$apply();\n }\n });\n };\n}]);\n'use strict';\n\ncontrollers.controller('CompanyController', ['$uibModal', '$scope', '$rootScope', '$filter', 'companyFactory', 'errorService', '$localStorage', 'roleService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, companyFactory, errorService, $localStorage, roleService, keyCodes) {\n $scope.isAdmin = roleService.isAdmin();\n $scope.isServicenter = roleService.isServicenter();\n $scope.innerRange = 5;\n $scope.currentPage = 1;\n $scope.itemRangeBottom = 0;\n $scope.itemRangeTop = 14;\n $scope.itemRange = 15;\n $scope.searchString = '';\n $scope.keyCode = '';\n $scope.lastSortCol = 'company_name';\n $scope.sortCol = 'company_name';\n $scope.sortReverse = false;\n $scope.sortReverseFn = function () {\n if ($scope.lastSortCol === $scope.sortCol && !$scope.sortReverse) {\n $scope.sortReverse = true;\n } else {\n $scope.lastSortCol = $scope.sortCol;\n $scope.sortReverse = false;\n }\n };\n $rootScope.reloadTable = function () {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) {\n errorService.handleError('No session main project');\n return;\n }\n $scope.selectedAll = false;\n $scope.selectedAny = false;\n companyFactory.getCompanies(true, sessionMainProject.division_id).then(function (response) {\n var data = response.data;\n $scope.companies = companyFactory.repackageCompanyDTOArray(data);\n $scope.totalItems = $scope.companies.length;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $rootScope.reloadTable();\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.searchString = $scope.pendingSearchString;\n $scope.updateFullTableRange();\n }\n };\n $scope.updateFullTableRange = function (filter, array, param) {\n var filtered = $scope.companies;\n if (!$scope.showInactive) {\n filtered = $filter('inactive')(filtered, $scope.showInactive);\n }\n if ($scope.searchString) {\n filtered = $filter('filter')(filtered, $scope.searchString);\n }\n $scope.totalItems = filtered.length;\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.currentPage - 1) * $scope.itemRange;\n };\n\n // --- MODAL - CREATE ---\n var animationsEnabled = true;\n $scope.createCompany = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/customers/company/company_form.html',\n controller: 'CompanyInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create_company';\n },\n id: function id() {\n return -1;\n }\n }\n });\n };\n\n // --- MODAL - VIEW VEHICLE ---\n $scope.viewCompany = function (_id) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/customers/company/company_form.html',\n controller: 'CompanyInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view_company';\n },\n id: function id() {\n return _id;\n }\n }\n });\n };\n $scope.$on('companyRepeatFinished', function (companiesRepeatFinishedEvent) {\n $scope.updateFullTableRange();\n });\n $scope.$on('updatedUserData', function (event) {\n $rootScope.reloadTable();\n });\n}]);\n\n// TODO: Move the CompanyInstanceController to own file!\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('CompanyInstanceController', ['$uibModalInstance', 'form_type', 'id', '$scope', '$rootScope', 'companyFactory', 'inputValidationService', 'errorService', 'dropdownService', '$localStorage', 'generalHelperService', 'notificationTemplateFactory', 'InputLengthLimits', function ($uibModalInstance, form_type, id, $scope, $rootScope, companyFactory, inputValidationService, errorService, dropdownService, $localStorage, generalHelperService, notificationTemplateFactory, InputLengthLimits) {\n $scope.InputLengthLimits = InputLengthLimits;\n $scope.validated = false;\n $scope.formLocked = true;\n $scope.form_type = form_type;\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) {\n errorService.handleError('No session main project');\n $uibModalInstance.dismiss('cancel');\n }\n if (form_type === 'view_company') {\n companyFactory.getCompany(id).then(function (response) {\n $scope.company = companyFactory.repackageCompanyDTO(response.data);\n $scope.selectedErpCompanyDisplayName = $scope.company.company_display_name;\n }, function (error) {\n errorService.handleError(error);\n });\n } else if (form_type === 'create_company') {\n // Generate empty conf\n $scope.company = {};\n $scope.company.company_id = null;\n $scope.company.is_active = true;\n notificationTemplateFactory.getConfigurableTemplates().then(function (response) {\n var data = response.data;\n $scope.company.notification_configuration = notificationTemplateFactory.extendTemplatesWithNames(data);\n }, function (error) {\n errorService.handleError(error);\n });\n companyFactory.getErpCompanies(sessionMainProject.division_id).then(function (response) {\n var erpCompanyDTOArray = response.data;\n $scope.erpCompanies = companyFactory.repackageErpCompanyDTOArray(erpCompanyDTOArray);\n $scope.formLocked = false;\n }, function (error) {\n errorService.handleError(error);\n });\n }\n\n // Finalizing or exiting form\n $scope.create = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) return;\n var companyDTO = companyFactory.packageCompany($scope.company, sessionMainProject.division_id);\n companyFactory.createCompany(companyDTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close();\n };\n $scope.update = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var companyDTO = companyFactory.packageCompany($scope.company, sessionMainProject.division_id);\n companyFactory.updateCompany($scope.company.company_id, companyDTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close();\n };\n $scope.delete = function () {\n companyFactory.deleteCompany($scope.company.company_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close();\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n $scope.isValidEmail = function (input) {\n return inputValidationService.isValidEmail(input);\n };\n $scope.validateForm = function () {\n $scope.formValid = inputValidationService.isValidInput($scope.company.company_name) && inputValidationService.isValidInput($scope.company.contact) && inputValidationService.isValidInput($scope.company.phone) && inputValidationService.isValidEmail($scope.company.email);\n return $scope.formValid;\n };\n $scope.loadErpCompany = function (erpCompany) {\n $scope.selectedErpCompanyDisplayName = erpCompany.company_display_name;\n $scope.company.erp_system_company_no = erpCompany.erp_system_company_no;\n $scope.company.company_name = erpCompany.company_name;\n $scope.company.organization_number = erpCompany.organization_number;\n };\n $scope.openDropdown = dropdownService.openDropdown;\n}]);\n'use strict';\n\ncontrollers.controller('UserController', ['$uibModal', '$scope', '$rootScope', '$filter', 'userFactory', 'roleService', 'errorService', 'keyCodes', '$routeParams', function ($uibModal, $scope, $rootScope, $filter, userFactory, roleService, errorService, keyCodes, $routeParams) {\n $scope.pagination = {\n currentPage: 1,\n totalItems: 0\n };\n\n // These variables used by the html to update attributes. They should only\n // be modified via updateSelection, not through other means.\n $scope.selection = {\n isActivatePossible: false,\n isDeactivatePossible: false,\n allUsersSelected: false\n };\n $scope.filterAndPagination = {\n filter: {\n includeActive: true,\n includeInactive: false,\n searchString: null,\n orderBy: 'user_name',\n orderDescending: false\n },\n pagination: {\n skip: 0,\n take: 15\n }\n };\n $scope.searchString = '';\n $scope.isSortingColumn = function (column) {\n return $scope.filterAndPagination.filter.orderBy == column;\n };\n $scope.isSortingColumnAndReversed = function (column) {\n return $scope.isSortingColumn(column) && $scope.filterAndPagination.filter.orderDescending;\n };\n $scope.handleColumnHeaderClicked = function (column) {\n if (column === $scope.filterAndPagination.filter.orderBy) {\n $scope.filterAndPagination.filter.orderDescending = !$scope.filterAndPagination.filter.orderDescending;\n } else {\n $scope.filterAndPagination.filter.orderBy = column;\n $scope.filterAndPagination.filter.orderDescending = false;\n }\n $scope.reloadTable();\n };\n $scope.identifyRoles = function () {\n $scope.isAdmin = roleService.isAdmin();\n $scope.isServicenter = roleService.isServicenter();\n $scope.isProjectOwner = roleService.isProjectOwner();\n $scope.isWarehousePlanner = roleService.isWarehousePlanner();\n $scope.isWarehouseOperator = roleService.isWarehouseOperator();\n $scope.isInternal = roleService.isInternal();\n $scope.isCustomer = roleService.isCustomer();\n };\n $scope.identifyRoles();\n $rootScope.reloadTable = function () {\n userFactory.getUsers($scope.filterAndPagination).then(function (response) {\n handleGetUsersResponse(response.data);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $rootScope.reloadTable();\n $scope.handleCheckAllToggled = function () {\n if ($scope.selection.allUsersSelected) {\n checkAll();\n } else {\n unCheckAll();\n }\n };\n function checkAll() {\n var filtered = getSelectableItems($scope.users);\n angular.forEach(filtered, function (p) {\n p.selected = true;\n });\n $scope.updateSelection();\n }\n ;\n function unCheckAll() {\n angular.forEach($scope.users, function (p) {\n p.selected = false;\n });\n $scope.updateSelection();\n }\n ;\n $scope.updateSelection = function () {\n var filtered = getSelectableItems($scope.users);\n var nrOfSelectedUsers = 0;\n var activatedUserSelected = false;\n var deactivatedUserSelected = false;\n angular.forEach(filtered, function (u) {\n if (u.selected) {\n nrOfSelectedUsers++;\n }\n if (u.selected && u.is_active) {\n activatedUserSelected = true;\n }\n if (u.selected && !u.is_active) {\n deactivatedUserSelected = true;\n }\n });\n if (nrOfSelectedUsers == filtered.length) {\n $scope.selection.allUsersSelected = true;\n } else {\n $scope.selection.allUsersSelected = false;\n }\n $scope.selection.isActivatePossible = !activatedUserSelected && deactivatedUserSelected;\n $scope.selection.isDeactivatePossible = activatedUserSelected && !deactivatedUserSelected;\n };\n function handleGetUsersResponse(data) {\n $scope.users = [];\n data.Items.forEach(loadUserData);\n $scope.pagination.totalItems = data.TotalCount;\n }\n ;\n function loadUserData(data) {\n var getCompanyName = function getCompanyName(data) {\n if (data.RoleName == 'Customer') {\n if (data.Companies.length > 0) return data.Companies[0].Name;\n return \"N/A\";\n }\n return \"\";\n };\n var getIsSelectable = function getIsSelectable(data) {\n if (data.RoleName == 'Customer') {\n return true;\n } else {\n if ($scope.isAdmin) return true;\n if ($scope.isServicenter && data.RoleId != RoleEnum.ADMINISTRATOR) return true;\n if ($scope.isProjectOwner && data.RoleId != RoleEnum.ADMINISTRATOR && data.RoleId != RoleEnum.SERVICENTER) return true;\n }\n return false;\n };\n $scope.users.push({\n user_id: data.UserId,\n user_login: data.Login,\n user_type: data.RoleTypeName,\n user_email: data.Email,\n user_name: data.Name,\n user_phone: data.PhoneNumber,\n user_role_name: data.RoleName,\n user_company_name: getCompanyName(data),\n is_active: !data.IsDeactivated,\n is_selectable: getIsSelectable(data),\n selected: false\n });\n $scope.updateSelection();\n }\n $scope.activateUsers = function (isActive) {\n var selectedUsers = getSelectedUsers();\n var selectedUserIds = selectedUsers.map(function (u) {\n return u.user_id;\n });\n var onSuccess = function onSuccess(response) {\n $rootScope.reloadTable();\n };\n var onFailure = function onFailure(error) {\n errorService.handleError(error);\n };\n if (isActive) {\n userFactory.reActivateUsers(selectedUserIds).then(onSuccess, onFailure);\n } else {\n userFactory.deactivateUsers(selectedUserIds).then(onSuccess, onFailure);\n }\n };\n function getSelectedUsers() {\n filtered = $filter('filter')($scope.users, function (i) {\n return i.selected;\n });\n return filtered;\n }\n function getSelectableItems(array) {\n filtered = $filter('filter')(array, function (i) {\n return i.is_selectable;\n });\n return filtered;\n }\n $scope.handleSearchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.filterAndPagination.filter.searchString = $scope.pendingSearchString;\n $scope.reloadTable();\n }\n };\n $scope.handleSearchButtonClicked = function () {\n $scope.filterAndPagination.filter.searchString = $scope.pendingSearchString;\n $scope.reloadTable();\n };\n $scope.handleShowActiveChanged = function () {\n $scope.reloadTable();\n };\n $scope.handlePaginationUpdated = function () {\n itemRangeBottom = ($scope.pagination.currentPage - 1) * $scope.filterAndPagination.pagination.take;\n $scope.filterAndPagination.pagination.skip = itemRangeBottom;\n $rootScope.reloadTable();\n };\n\n // --- MODAL - CREATE ---\n var animationsEnabled = true;\n $scope.createUser = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/customers/users/user_form.html',\n controller: 'UserInstanceController',\n size: 'lg',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create_user';\n },\n id: function id() {\n return -1;\n }\n }\n });\n modalInstance.result.then(function (results) {\n if (results.success) {\n $rootScope.reloadTable();\n }\n });\n };\n\n // --- MODAL - VIEW USER ---\n $scope.viewUser = function (_id) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/customers/users/user_form.html',\n controller: 'UserInstanceController',\n size: 'lg',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view_user';\n },\n id: function id() {\n return _id;\n }\n }\n });\n modalInstance.result.then(function (results) {\n if (results.success) {\n $rootScope.reloadTable();\n }\n });\n };\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('UserInstanceController', ['$uibModalInstance', 'form_type', 'id', '$scope', 'companyFactory', 'userFactory', 'workOrderFactory', 'mainProjectFactory', 'roleService', 'errorService', '$localStorage', 'InputLengthLimits', function ($uibModalInstance, form_type, id, $scope, companyFactory, userFactory, workOrderFactory, mainProjectFactory, roleService, errorService, $localStorage, InputLengthLimits) {\n $scope.InputLengthLimits = InputLengthLimits;\n $scope.form_type = form_type;\n $scope.canEdit = false;\n $scope.register_user = {};\n $scope.selectedMainProjects = [];\n $scope.selectedWorkorders = [];\n $scope.lang = {};\n $scope.lang.SWEDISH = LanguageEnum.SWEDISH;\n $scope.lang.ENGLISH = LanguageEnum.ENGLISH;\n $scope.language_id = LanguageEnum.SWEDISH;\n $scope.identifyRoles = function () {\n $scope.isAdmin = roleService.isAdmin();\n $scope.isServicenter = roleService.isServicenter();\n $scope.isProjectOwner = roleService.isProjectOwner();\n $scope.isWarehousePlanner = roleService.isWarehousePlanner();\n $scope.isWarehouseOperator = roleService.isWarehouseOperator();\n $scope.isInternal = roleService.isInternal();\n $scope.isCustomer = roleService.isCustomer();\n };\n $scope.identifyRoles();\n if (form_type === 'view_user') {\n $scope.user_id = id;\n userFactory.getUser($scope.user_id).then(function (response) {\n var data = response.data;\n $scope.DTO = data;\n $scope.canEdit = canEditUserWithRole(data.RoleId);\n $scope.isActivated = data.IsActivated;\n $scope.register_user.username = data.Login, $scope.register_user.contact_name = data.Name;\n $scope.register_user.contact_email = data.Email, $scope.register_user.contact_phone_nr = data.PhoneNumber;\n $scope.register_user.roleId = data.RoleId;\n $scope.selectedCompanies = data.Companies;\n $scope.selectedWorkorders = data.WorkOrders;\n $scope.selectedMainProjects = data.MainProjects;\n $scope.language_id = data.LanguageId;\n $scope.showExternal = false;\n $scope.showInternal = false;\n $scope.showAdmin = false;\n $scope.showServicecenter = false;\n $scope.showProjectOwner = false;\n $scope.showTeamledare = false;\n $scope.showOperator = false;\n switch (data.RoleId) {\n case RoleEnum.CUSTOMER:\n $scope.showExternalDiv();\n break;\n case RoleEnum.ADMINISTRATOR:\n $scope.showInternalDiv();\n break;\n case RoleEnum.SERVICENTER:\n $scope.showInternalDiv();\n $scope.showServicecenterDiv();\n break;\n case RoleEnum.PROJECT_OWNER:\n $scope.showInternalDiv();\n $scope.showProjectOwnerDiv();\n break;\n case RoleEnum.WAREHOUSE_OPERATOR:\n $scope.showInternalDiv();\n $scope.showOperatorDiv();\n break;\n case RoleEnum.WAREHOUSE_PLANNER:\n $scope.showInternalDiv();\n $scope.showTeamledareDiv();\n break;\n default:\n break;\n }\n angular.forEach($scope.selectedMainProjects, function (smp) {\n angular.forEach($scope.main_projects, function (mp) {\n if (smp.MainProjectId == mp.main_project_id) {\n mp.checked = true;\n }\n });\n });\n if ($scope.selectedCompanies.length > 0) {\n $scope.company_id = $scope.selectedCompanies[0].CompanyId;\n $scope.company_display_name = $scope.selectedCompanies[0].Name;\n }\n if ($scope.selectedWorkorders.length > 0) {\n $scope.subcontractor_company_display_name = $scope.selectedWorkorders[0].CompanyName + ($scope.selectedWorkorders[0].ErpSystemReference ? \" (\" + $scope.selectedWorkorders[0].ErpSystemReference + \")\" : \"\");\n $scope.subcontractor_company_id = $scope.selectedWorkorders[0].CompanyId;\n $scope.loadWorkorders();\n }\n $scope.evaluateProgress();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n\n //Reachabla in view\n $scope.cancel = function () {\n $uibModalInstance.close(false);\n };\n $scope.showExternal = true;\n $scope.showInternal = false;\n $scope.showExternalDiv = function () {\n $scope.showExternal = true;\n $scope.showInternal = false;\n $scope.showAdmin = false;\n $scope.showServicecenter = false;\n $scope.showProjectOwner = false;\n $scope.showTeamledare = false;\n $scope.showOperator = false;\n $scope.evaluateProgress();\n };\n $scope.showInternalDiv = function () {\n $scope.showExternal = false;\n $scope.showInternal = true;\n $scope.showAdmin = $scope.isAdmin;\n $scope.showServicecenter = !$scope.isAdmin;\n $scope.showProjectOwner = false;\n $scope.showTeamledare = false;\n $scope.showOperator = false;\n $scope.evaluateProgress();\n };\n $scope.showAdminDiv = function () {\n $scope.showAdmin = true;\n $scope.showServicecenter = false;\n $scope.showProjectOwner = false;\n $scope.showTeamledare = false;\n $scope.showOperator = false;\n $scope.evaluateProgress();\n };\n $scope.showServicecenterDiv = function () {\n getMainProjects();\n $scope.showAdmin = false;\n $scope.showServicecenter = true;\n $scope.showProjectOwner = false;\n $scope.showTeamledare = false;\n $scope.showOperator = false;\n $scope.evaluateProgress();\n };\n $scope.showProjectOwnerDiv = function () {\n getMainProjects();\n $scope.showAdmin = false;\n $scope.showServicecenter = false;\n $scope.showProjectOwner = true;\n $scope.showTeamledare = false;\n $scope.showOperator = false;\n $scope.evaluateProgress();\n };\n $scope.showTeamledareDiv = function () {\n getMainProjects();\n $scope.showAdmin = false;\n $scope.showServicecenter = false;\n $scope.showProjectOwner = false;\n $scope.showTeamledare = true;\n $scope.showOperator = false;\n $scope.evaluateProgress();\n };\n $scope.showOperatorDiv = function () {\n getMainProjects();\n $scope.showAdmin = false;\n $scope.showServicecenter = false;\n $scope.showProjectOwner = false;\n $scope.showTeamledare = false;\n $scope.showOperator = true;\n $scope.evaluateProgress();\n };\n function getCompanies() {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) {\n errorService.handleError('No session main project');\n return;\n }\n companyFactory.getCompanies(false, sessionMainProject.division_id).then(function (response) {\n var data = response.data;\n $scope.companies = companyFactory.repackageCompanyDTOArray(data);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n getCompanies();\n function canEditUserWithRole(roleId) {\n var editableRoles = [];\n switch (roleService.myRoleId()) {\n case RoleEnum.ADMINISTRATOR:\n editableRoles = [RoleEnum.ADMINISTRATOR, RoleEnum.SERVICENTER, RoleEnum.PROJECT_OWNER, RoleEnum.WAREHOUSE_PLANNER, RoleEnum.WAREHOUSE_OPERATOR, RoleEnum.CUSTOMER];\n break;\n case RoleEnum.SERVICENTER:\n editableRoles = [RoleEnum.SERVICENTER, RoleEnum.PROJECT_OWNER, RoleEnum.WAREHOUSE_PLANNER, RoleEnum.WAREHOUSE_OPERATOR, RoleEnum.CUSTOMER];\n break;\n case RoleEnum.PROJECT_OWNER:\n editableRoles = [RoleEnum.PROJECT_OWNER, RoleEnum.WAREHOUSE_PLANNER, RoleEnum.WAREHOUSE_OPERATOR, RoleEnum.CUSTOMER];\n break;\n case RoleEnum.WAREHOUSE_PLANNER:\n editableRoles = [RoleEnum.WAREHOUSE_PLANNER, RoleEnum.WAREHOUSE_OPERATOR, RoleEnum.CUSTOMER];\n break;\n case RoleEnum.WAREHOUSE_OPERATOR:\n editableRoles = [RoleEnum.WAREHOUSE_OPERATOR, RoleEnum.CUSTOMER];\n break;\n case RoleEnum.CUSTOMER:\n editableRoles = [RoleEnum.CUSTOMER];\n break;\n default:\n break;\n }\n return editableRoles.includes(roleId);\n }\n function inSelectedMainProjectsArray(mainProjectIdToLookFor) {\n var retVal = false;\n $scope.selectedMainProjects.forEach(function (smp, index) {\n if (smp.MainProjectId == mainProjectIdToLookFor) retVal = true;\n });\n return retVal;\n }\n function getMainProjects() {\n $scope.main_projects = [];\n mainProjectFactory.getMainProjects().then(function (response) {\n var data = response.data;\n data.forEach(function (project, index) {\n $scope.main_projects.push({\n main_project_id: project.MainProjectId,\n main_project_name: project.Name,\n checked: inSelectedMainProjectsArray(project.MainProjectId)\n });\n });\n }, function (error) {\n errorService.handleError(error);\n });\n }\n function isWorkorderSelected(work_order_id) {\n var found = false;\n $scope.selectedWorkorders.forEach(function (swo, index) {\n if (swo.WorkOrderId == work_order_id) {\n found = true;\n }\n });\n return found;\n }\n function removeFromSelectedWorkorders(work_order_id) {\n $scope.selectedWorkorders = $scope.selectedWorkorders.filter(function (swo) {\n return swo.WorkOrderId !== work_order_id;\n });\n }\n function saveSelectedWorkorders() {\n $scope.workorders.forEach(function (wo, index) {\n var isChecked = isWorkorderSelected(wo.work_order_id);\n if (wo.checked && !isChecked) {\n $scope.selectedWorkorders.push({\n WorkOrderId: wo.work_order_id\n });\n } else if (!wo.checked && isChecked) {\n removeFromSelectedWorkorders(wo.work_order_id);\n }\n });\n }\n function getWorkOrdersByCompanyId(id) {\n if ($scope.workorders != undefined && $scope.workorders.length > 0) {\n saveSelectedWorkorders();\n }\n $scope.workorders = [];\n if ($scope.isAdmin || $scope.isServicenter) {\n workOrderFactory.getAllWorkOrdersByCompanyId(id).then(function (response) {\n var data = response.data;\n angular.forEach(data, function (data, index) {\n $scope.workorders.push({\n work_order_id: data.WorkOrderId,\n work_order_name: data.Name,\n checked: isWorkorderSelected(data.WorkOrderId)\n });\n });\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) {\n errorService.handleError('No session main project');\n return;\n }\n workOrderFactory.getWorkOrdersByCompanyId(id, sessionMainProject.main_project_id).then(function (response) {\n var data = response.data;\n angular.forEach(data, function (data, index) {\n $scope.workorders.push({\n work_order_id: data.WorkOrderId,\n work_order_name: data.Name,\n checked: isWorkorderSelected(data.WorkOrderId)\n });\n });\n }, function (error) {\n errorService.handleError(error);\n });\n }\n }\n $scope.onMainProjectCheckboxChanged = function () {\n $scope.updateSelectedMainProjects();\n $scope.evaluateProgress();\n };\n $scope.evaluateProgress = function () {\n $scope.sectionOneDone = $scope.register_user.username !== '' && typeof $scope.register_user.username !== 'undefined';\n $scope.sectionTwoDone = $scope.sectionOneDone && ($scope.showExternal && $scope.company_id !== '' && $scope.company_id !== 'undefined' && $scope.company_id !== undefined || $scope.showExternal && $scope.subcontractor_company_id !== '' && $scope.subcontractor_company_id !== 'undefined' && $scope.subcontractor_company_id !== undefined || $scope.showAdmin || $scope.showServicecenter && $scope.selectedMainProjects.length > 0 || $scope.showProjectOwner && $scope.selectedMainProjects.length > 0 || $scope.showTeamledare && $scope.selectedMainProjects.length > 0 || $scope.showOperator && $scope.selectedMainProjects.length > 0);\n $scope.sectionThreeDone = $scope.sectionOneDone && $scope.sectionTwoDone && $scope.register_user.contact_name !== '' && typeof $scope.register_user.contact_name !== 'undefined' && $scope.register_user.contact_phone_nr !== '' && $scope.register_user.contact_phone_nr !== 'null' && typeof $scope.register_user.contact_phone_nr !== 'undefined' && $scope.register_user.contact_email !== '' && typeof $scope.register_user.contact_email !== 'undefined';\n $scope.sectionFourDone = $scope.sectionOneDone && $scope.sectionTwoDone && $scope.sectionThreeDone && $scope.language_id !== '' && $scope.language_id !== 'undefined' && $scope.language_id !== undefined;\n };\n $scope.validateForm = function () {\n $scope.formValid = typeof $scope.register_user.username !== 'undefined' && $scope.register_user.username !== '' && typeof $scope.register_user.contact_name !== 'undefined' && $scope.register_user.contact_name !== '';\n return $scope.formValid;\n };\n $scope.loadWorkorders = function () {\n $scope.showWorkorders = $scope.subcontractor_company_id !== '' && $scope.subcontractor_company_id !== 'undefined' && $scope.subcontractor_company_id !== undefined;\n if ($scope.showWorkorders) {\n getWorkOrdersByCompanyId($scope.subcontractor_company_id);\n }\n };\n $scope.subcontractorDropdownChanged = function () {\n $scope.validateForm();\n $scope.evaluateProgress();\n $scope.loadWorkorders();\n };\n $scope.updateSelectedMainProjects = function () {\n $scope.selectedMainProjects = [];\n $scope.main_projects.forEach(function (mp, index) {\n if (mp.checked) {\n $scope.selectedMainProjects.push({\n MainProjectId: mp.main_project_id\n });\n }\n });\n };\n $scope.createOrUpdate = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var roleId = -1;\n if ($scope.showExternal) {\n roleId = RoleEnum.CUSTOMER;\n } else if ($scope.showInternal) {\n if ($scope.showAdmin) {\n roleId = RoleEnum.ADMINISTRATOR;\n } else if ($scope.showServicecenter) {\n roleId = RoleEnum.SERVICENTER;\n } else if ($scope.showProjectOwner) {\n roleId = RoleEnum.PROJECT_OWNER;\n } else if ($scope.showTeamledare) {\n roleId = RoleEnum.WAREHOUSE_PLANNER;\n } else if ($scope.showOperator) {\n roleId = RoleEnum.WAREHOUSE_OPERATOR;\n }\n }\n $scope.selectedCompanies = [];\n if ($scope.showExternal && $scope.company_id !== '' && $scope.company_id !== 'undefined' && $scope.company_id !== undefined) {\n $scope.selectedCompanies.push({\n companyId: $scope.company_id\n });\n }\n ;\n if ($scope.showExternal && $scope.subcontractor_company_id !== '' && $scope.subcontractor_company_id !== 'undefined' && $scope.subcontractor_company_id !== undefined) {\n saveSelectedWorkorders();\n }\n ;\n if ($scope.showInternal && ($scope.showServicecenter || $scope.showProjectOwner || $scope.showTeamledare || $scope.showOperator)) {\n $scope.updateSelectedMainProjects();\n }\n var results = {};\n if ($scope.form_type == 'create_user') {\n var DTO = {\n \"Login\": $scope.register_user.username,\n \"Email\": $scope.register_user.contact_email,\n \"Name\": $scope.register_user.contact_name,\n \"PhoneNumber\": $scope.register_user.contact_phone_nr,\n \"RoleId\": roleId,\n \"Companies\": $scope.selectedCompanies,\n \"WorkOrders\": $scope.selectedWorkorders,\n \"MainProjects\": $scope.selectedMainProjects,\n \"LanguageId\": $scope.language_id\n };\n userFactory.createUser(DTO, roleId).then(function (response) {\n results.success = true;\n $uibModalInstance.close(results);\n }, function (error) {\n errorService.handleError(error);\n $scope.errorMessage = error.data.Message;\n $scope.showErrorMessage = true;\n });\n } else if ($scope.form_type == 'manage_user') {\n var DTO = {\n \"UserId\": $scope.user_id,\n \"Login\": $scope.register_user.username,\n \"Email\": $scope.register_user.contact_email,\n \"Name\": $scope.register_user.contact_name,\n \"PhoneNumber\": $scope.register_user.contact_phone_nr,\n \"RoleId\": roleId,\n \"Companies\": $scope.selectedCompanies,\n \"WorkOrders\": $scope.selectedWorkorders,\n \"MainProjects\": $scope.selectedMainProjects,\n \"LanguageId\": $scope.language_id\n };\n userFactory.updateUser(DTO).then(function (response) {\n results.success = true;\n if (response.UserId == $localStorage.UserId) {\n userFactory.setUserData(true);\n }\n $uibModalInstance.close(results);\n }, function (error) {\n errorService.handleError(error);\n $scope.errorMessage = error.data.Message;\n $scope.showErrorMessage = true;\n });\n }\n };\n $scope.resendActivationLink = function () {\n $scope.activationLinkSent = false;\n userFactory.resendActivationLink($scope.DTO).then(function (response) {\n $scope.activationLinkSent = true;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n}]);\n'use strict';\n\ncontrollers.controller('GateController', ['$uibModal', '$scope', '$rootScope', '$filter', 'gateFactory', 'errorService', '$localStorage', 'roleService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, gateFactory, errorService, $localStorage, roleService, keyCodes) {\n $scope.canEdit = roleService.isAdmin() || roleService.isServicenter() || roleService.isProjectOwner();\n $scope.gates = [];\n $rootScope.reloadTable = function () {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) return;\n gateFactory.getGatesByMainProjectId(sessionMainProject.main_project_id).then(function (response) {\n var data = response.data;\n $scope.gates = gateFactory.repackageDTOArray(data);\n $scope.filterInactiveItems();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n\n // Table bindings\n $scope.projects = [];\n $scope.tableItems = $scope.projects;\n $scope.selectedItems = [];\n $scope.tableHeaderItems = [{\n propertyName: 'gate_name',\n translateName: 'GATE'\n }, {\n propertyName: 'system_gate_name',\n translateName: 'SYSTEM_GATE_NAME'\n }, {\n propertyName: 'gate_location',\n translateName: 'LOCATION'\n }, {\n propertyName: 'project_name',\n translateName: 'PROJECT'\n }, {\n propertyName: 'is_active',\n translateName: 'ACTIVE'\n }];\n\n // Handle active/inactive\n $scope.showInactive = {\n value: false\n }; // Wrap in object to bind ng-model to correct scope\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.filterInactiveItems = function () {\n $scope.tableItems = $filter('filter')($scope.gates, {\n inactive: $scope.showInactive.value\n });\n };\n $scope.activateSelectedItems = function (setToActive) {\n $scope.selectedItems.forEach(function (data) {\n if (setToActive) {\n gateFactory.activateGate(data.gate_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n gateFactory.deactivateGate(data.gate_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n });\n };\n $rootScope.reloadTable(); // Initialize table\n\n $scope.$watchCollection('selectedItems', function () {\n if ($scope.selectedItems.length === 0) {\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n } else {\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n angular.forEach($scope.selectedItems, function (item) {\n if (item.is_active) {\n $scope.hasActiveSelection = true;\n } else {\n $scope.hasInactiveSelection = true;\n }\n });\n }\n });\n\n // --- MODAL - CREATE ---\n var animationsEnabled = true;\n $scope.createGate = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/gate_management/gate/gate_form.html',\n controller: 'GateInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create_gate';\n },\n id: function id() {\n return -1;\n }\n }\n });\n modalInstance.result.then(function (results) {\n $rootScope.reloadTable();\n });\n };\n\n // --- MODAL - VIEW GATE ---\n $scope.viewGate = function (gate) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/gate_management/gate/gate_form.html',\n controller: 'GateInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view_gate';\n },\n id: function id() {\n return gate.gate_id;\n }\n }\n });\n modalInstance.result.then(function (results) {\n $rootScope.reloadTable();\n });\n };\n\n // Events\n $scope.$on('updatedUserData', function (event) {\n $rootScope.reloadTable();\n });\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('GateInstanceController', ['$uibModalInstance', 'form_type', 'id', '$scope', '$rootScope', 'gateFactory', 'projectFactory', 'errorService', 'inputValidationService', '$localStorage', '$filter', function ($uibModalInstance, form_type, id, $scope, $rootScope, gateFactory, projectFactory, errorService, inputValidationService, $localStorage, $filter) {\n $scope.validated = false;\n $scope.form_type = form_type;\n $scope.gate_name = '';\n $scope.system_gate_name = '';\n $scope.project_id = -1;\n $scope.project_name = '';\n $scope.location = '';\n $scope.comments = '';\n if (form_type === 'view_gate') {\n gateFactory.getGate(id).then(function (response) {\n var data = response.data;\n $scope.gate_id = id;\n $scope.gate_name = data.Name;\n $scope.system_gate_name = data.SystemName;\n $scope.project_id = data.ProjectId;\n $scope.project_name = data.ProjectName;\n $scope.gate_location = data.Location;\n $scope.is_active = data.IsActive;\n $scope.comments = data.Comments;\n }, function (error) {\n errorService.handleError(error);\n });\n }\n\n // Populate projects list\n function loadProjects() {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) return;\n projectFactory.getProjects(sessionMainProject.main_project_id, false).then(function (response) {\n var data = response.data;\n $scope.projects = projectFactory.repackageDTOArray(data);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n // Disabled until further notice as of SPL338.\n //loadProjects();\n\n // Finalizing or exiting form\n $scope.create = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = {\n \"Name\": $scope.gate_name,\n \"SystemName\": $scope.system_gate_name,\n \"Location\": $scope.gate_location,\n \"ProjectId\": $scope.project_id,\n \"ProjectName\": $scope.project_name,\n \"IsActive\": true,\n \"Comments\": $scope.comments\n };\n gateFactory.createGate(DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(\"Gate created\"); // Pass in returned item here.\n };\n\n $scope.activation = function (isActive) {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n if (isActive) {\n gateFactory.activateGate($scope.gate_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n gateFactory.deactivateGate($scope.gate_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n $uibModalInstance.close(''); // Pass in returned item here.\n };\n\n $scope.update = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = {\n \"GateId\": $scope.gate_id,\n \"Name\": $scope.gate_name,\n \"SystemName\": $scope.system_gate_name,\n \"Location\": $scope.gate_location,\n \"ProjectId\": $scope.project_id,\n \"ProjectName\": $scope.project_name,\n \"IsActive\": $scope.is_active,\n \"Comments\": $scope.comments\n };\n gateFactory.updateGate(DTO.GateId, DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(''); // Pass in returned item here.\n };\n\n $scope.delete = function () {\n gateFactory.deleteGate($scope.gate_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(''); // Pass in returned item here.\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n $scope.validateForm = function () {\n $scope.formValid = inputValidationService.isValidInput($scope.gate_name) && inputValidationService.isValidInput($scope.gate_location) && inputValidationService.isValidInput($scope.system_gate_name) && inputValidationService.isValidInput($scope.project_name);\n return $scope.formValid;\n };\n $scope.$on('updatedUserData', function (event) {\n // Disabled until further notice as of SPL338.\n //loadProjects();\n });\n}]);\n'use strict';\n\ncontrollers.controller('GateBookingController', ['$uibModal', '$scope', '$rootScope', '$filter', 'errorService', 'orderFactory', 'orderPackageCollectionFactory', 'taskStatusService', '$localStorage', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, errorService, orderFactory, orderPackageCollectionFactory, taskStatusService, $localStorage, keyCodes) {\n $scope.innerRange = 5;\n $scope.currentPage = 1;\n $scope.itemRangeBottom = 0;\n $scope.itemRangeTop = 14;\n $scope.itemRange = 15;\n $scope.selectedAny = false;\n $scope.selectedAll = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.hasMixedSelection = false;\n $scope.searchString = '';\n $scope.keyCode = '';\n $scope.lastSortCol = 'booking_number';\n $scope.sortCol = 'booking_number';\n $scope.sortReverse = false;\n $scope.sortReverseFn = function () {\n if ($scope.lastSortCol === $scope.sortCol && !$scope.sortReverse) {\n $scope.sortReverse = true;\n } else {\n $scope.lastSortCol = $scope.sortCol;\n $scope.sortReverse = false;\n }\n };\n var selected = [];\n $rootScope.reloadTable = function () {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) return;\n $scope.selectedAll = false;\n $scope.selectedAny = false;\n orderFactory.getGateBookings(sessionMainProject.main_project_id).then(function (response) {\n $scope.gateBookings = response.data;\n $scope.totalItems = $scope.gateBookings.length;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $rootScope.reloadTable();\n $scope.checkAll = function () {\n selected = [];\n var filtered = $scope.package_collections;\n if (!$scope.showCancelled) filtered = $filter('filter')(filtered, {\n task_status: '!' + TaskStatusTypeEnum.CANCELLED\n }, true);\n angular.forEach(filtered, function (p) {\n p.selected = $scope.selectedAll;\n if (p.selected) {\n selected.push(p);\n }\n });\n $scope.updateSelection();\n };\n $scope.unCheckAll = function () {\n selected = [];\n angular.forEach($scope.package_collections, function (p) {\n p.selected = false;\n });\n $scope.updateSelection();\n };\n $scope.updateSelection = function () {\n var oneActiveSelected = false;\n var oneInactiveSelected = false;\n $scope.selectedAny = false;\n selected = [];\n angular.forEach($scope.package_collections, function (p) {\n if (!$scope.selectedAny && p.selected) {\n $scope.selectedAny = true;\n }\n if (p.selected) {\n selected.push(p);\n }\n if (!oneActiveSelected && !$scope.isCancelled(p.task_status) && p.selected) {\n oneActiveSelected = true;\n }\n if (!oneInactiveSelected && $scope.isCancelled(p.task_status) && p.selected) {\n oneInactiveSelected = true;\n }\n });\n if (!$scope.selectedAny) {\n $scope.selectedAll = false;\n }\n\n // Mixed selection\n if (oneActiveSelected && oneInactiveSelected) {\n $scope.hasMixedSelection = true;\n $scope.hasActiveSelection = true;\n $scope.hasInactiveSelection = true;\n } else {\n $scope.hasMixedSelection = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n }\n\n //Active selction\n if (oneActiveSelected && !oneInactiveSelected) {\n $scope.hasActiveSelection = true;\n } else $scope.hasActiveSelection = false;\n\n //Inactive selction\n if (!oneActiveSelected && oneInactiveSelected) {\n $scope.hasInactiveSelection = true;\n } else $scope.hasInactiveSelection = false;\n };\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.searchString = $scope.pendingSearchString;\n $scope.updateFullTableRange('filter', $scope.package_collections, $scope.searchString);\n }\n };\n $scope.updateFullTableRange = function (filter, array, param) {\n var filtered = $filter(filter)(array, param);\n $scope.totalItems = filtered.length;\n };\n $scope.updateFullTableRangeShowCancelled = function (array, showCancelled) {\n var finalArray = array;\n if (!$scope.showCancelled) {\n finalArray = $filter('filter')(array, {\n task_status: '!' + TaskStatusTypeEnum.CANCELLED\n }, true);\n }\n $scope.totalItems = finalArray.length;\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.currentPage - 1) * $scope.itemRange;\n };\n $scope.activatePackageCollections = function (isActive) {\n selected.forEach(function (data) {\n var orderDTO = orderPackageCollectionFactory.createOrderDTO(data);\n if (isActive) {\n // TODO: Not possible to reactivate an order yet.\n } else {\n orderFactory.cancelOrder(data.order_id, orderDTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n });\n };\n $scope.isConfirmedOrLater = function (task_status) {\n return taskStatusService.isConfirmedOrLater(task_status);\n };\n $scope.isNotified = function (task_status) {\n return taskStatusService.isNotified(task_status);\n };\n $scope.isCancelled = function (task_status) {\n return taskStatusService.isCancelled(task_status);\n };\n $scope.$on('updatedUserData', function (event) {\n $rootScope.reloadTable();\n });\n $scope.$on('bookingOrderCreated', function (event) {\n $rootScope.reloadTable();\n });\n}]);\n'use strict';\n\ncontrollers.controller('GatePassController', ['$uibModal', '$scope', '$rootScope', '$filter', 'gatePassFactory', 'errorService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, gatePassFactory, errorService, keyCodes) {\n $scope.innerRange = 5;\n $scope.currentPage = 1;\n $scope.itemRangeBottom = 0;\n $scope.itemRangeTop = 14;\n $scope.itemRange = 15;\n $scope.searchString = '';\n $scope.keyCode = '';\n $scope.lastSortCol = 'occurred';\n $scope.sortCol = 'occurred';\n $scope.sortReverse = true;\n $scope.sortReverseFn = function () {\n if ($scope.lastSortCol === $scope.sortCol && !$scope.sortReverse) {\n $scope.sortReverse = true;\n } else {\n $scope.lastSortCol = $scope.sortCol;\n $scope.sortReverse = false;\n }\n };\n var selected = [];\n $rootScope.reloadTable = function () {\n $scope.gates = [];\n gatePassFactory.getAllGatePasses().then(function (response) {\n response.data.forEach(loadData);\n $scope.totalItems = $scope.gates.length;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $rootScope.reloadTable();\n function loadData(data, index) {\n $scope.selectedAll = false;\n $scope.selectedAny = false;\n var tempGate = {\n gate_pass_id: data.GatePassId,\n gate_id: data.GateId,\n gate_name: data.GateName,\n order_id: data.OrderId,\n order_number: data.OrderNumber,\n event_id: data.EventId,\n occurred: data.Occured,\n company: data.Company\n };\n if (isUnique($scope.gates, 'gate_pass_id', data.GatePassId)) {\n $scope.gates.push(tempGate);\n }\n }\n function isUnique(array, idKey, id) {\n var unique = true;\n array.forEach(function (entry, index) {\n if (entry[idKey] === id) {\n unique = false;\n }\n });\n return unique;\n }\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.searchString = $scope.pendingSearchString;\n $scope.updateFullTableRange('filter', $scope.gates, $scope.searchString);\n }\n };\n $scope.updateFullTableRange = function (filter, array, param) {\n var filtered = $filter(filter)(array, param);\n $scope.totalItems = filtered.length;\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.currentPage - 1) * $scope.itemRange;\n };\n}]);\n'use strict';\n\ncontrollers.controller('ContactController', ['$uibModal', '$scope', '$rootScope', '$filter', 'contactFactory', 'errorService', '$localStorage', 'roleService', function ($uibModal, $scope, $rootScope, $filter, contactFactory, errorService, $localStorage, roleService) {\n var vm = this;\n vm.hasEditPermission = roleService.isAdmin() || roleService.isServicenter() || roleService.isProjectOwner();\n vm.contacts = [];\n $rootScope.updateContacts = function () {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) {\n errorService.handleError('No session main project');\n return;\n }\n contactFactory.getContacts(sessionMainProject.main_project_id, true).then(function (response) {\n var data = response.data;\n vm.contacts = contactFactory.repackageDTOArray(data);\n vm.filterInactiveContacts();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n\n // Table bindings\n vm.tableItems = vm.contacts;\n vm.selectedContacts = [];\n vm.tableHeaderItems = [{\n propertyName: 'name',\n translateName: 'NAME'\n }, {\n propertyName: 'phone',\n translateName: 'PHONE'\n }, {\n propertyName: 'email',\n translateName: 'EMAIL'\n }, {\n propertyName: 'company',\n translateName: 'COMPANY'\n }, {\n propertyName: 'description',\n translateName: 'DESCRIPTION'\n }, {\n propertyName: 'is_active',\n translateName: 'ACTIVE'\n }];\n\n // Handle active/inactive contacts\n vm.showInactive = {\n value: false\n }; // Wrap in object to bind ng-model to correct scope\n vm.isActivatePossible = false;\n vm.isDectivatePossible = false;\n vm.filterInactiveContacts = function () {\n vm.tableItems = $filter('inactive')(vm.contacts, vm.showInactive.value);\n };\n vm.activateContacts = function (setToActive) {\n var onSuccess = function onSuccess(response) {\n $rootScope.updateContacts();\n };\n var onFailure = function onFailure(error) {\n errorService.handleError(error);\n };\n var selectedIds = vm.selectedContacts.map(function (contact) {\n return contact.contact_id;\n });\n if (setToActive) {\n contactFactory.activateContacts(selectedIds).then(onSuccess, onFailure);\n } else {\n contactFactory.deactivateContacts(selectedIds).then(onSuccess, onFailure);\n }\n };\n $rootScope.updateContacts(); // Initialize contacts\n\n $scope.$watchCollection('vm.selectedContacts', function () {\n var hasActiveSelection = false;\n var hasInactiveSelection = false;\n if (vm.selectedContacts.length >= 0) {\n angular.forEach(vm.selectedContacts, function (contact) {\n if (contact.is_active) {\n hasActiveSelection = true;\n } else {\n hasInactiveSelection = true;\n }\n });\n }\n vm.isActivatePossible = hasInactiveSelection && !hasActiveSelection;\n vm.isDeactivatePossible = hasActiveSelection && !hasInactiveSelection;\n });\n\n // --- MODAL - CREATE ---\n var animationsEnabled = true;\n vm.createContact = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/contact/contact_form.html',\n controller: 'ContactInstanceController',\n controllerAs: 'vm',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n formType: function formType() {\n return 'create';\n },\n id: function id() {\n return -1;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n\n // --- MODAL - VIEW ---\n vm.viewContact = function (contact) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/contact/contact_form.html',\n controller: 'ContactInstanceController',\n controllerAs: 'vm',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n formType: function formType() {\n return 'view';\n },\n id: function id() {\n return contact.contact_id;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n\n // Events\n $scope.$on('updatedUserData', function (event) {\n $rootScope.updateContacts();\n });\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('ContactInstanceController', ['$uibModalInstance', 'formType', 'id', '$rootScope', 'contactFactory', 'errorService', 'inputValidationService', '$localStorage', 'roleService', 'InputLengthLimits', function ($uibModalInstance, formType, id, $rootScope, contactFactory, errorService, inputValidationService, $localStorage, roleService, InputLengthLimits) {\n var vm = this;\n vm.isValid = false;\n vm.isValidated = false;\n vm.formType = formType;\n vm.hasEditPermission = roleService.isAdmin() || roleService.isServicenter() || roleService.isProjectOwner();\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) {\n errorService.handleError('No session main project');\n $uibModalInstance.dismiss('cancel');\n }\n if (formType === 'view') {\n contactFactory.getContact(id).then(function (response) {\n var data = response.data;\n vm.name = data.Name;\n vm.phone = data.Phone;\n vm.email = data.Email;\n vm.company = data.Company, vm.main_contact_id = data.MainContactId;\n vm.description = data.Description;\n vm.is_active = data.IsActive;\n }, function (error) {\n errorService.handleError(error);\n });\n }\n\n // Finalizing or exiting form\n vm.createItem = function () {\n vm.validateForm();\n if (!vm.isValid) {\n return;\n }\n var DTO = {\n \"Name\": vm.name,\n \"Phone\": vm.phone,\n \"Email\": vm.email,\n \"Company\": vm.company,\n \"Description\": vm.description,\n \"MainProjectId\": sessionMainProject.main_project_id,\n \"IsActive\": true\n };\n contactFactory.createContact(DTO).then(function (response) {\n $rootScope.updateContacts();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close();\n };\n vm.activation = function (isActive) {\n vm.validateForm();\n if (!vm.isValid) {\n return;\n }\n if (isActive) {\n contactFactory.activateContact(id).then(function (response) {\n $rootScope.updateContacts();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n contactFactory.deactivateContact(id).then(function (response) {\n $rootScope.updateContacts();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n $uibModalInstance.close();\n };\n vm.updateItem = function () {\n vm.validateForm();\n if (!vm.isValid) {\n return;\n }\n var DTO = {\n \"Name\": vm.name,\n \"Phone\": vm.phone,\n \"Email\": vm.email,\n \"Company\": vm.company,\n \"Description\": vm.description,\n \"MainProjectId\": $localStorage.user.session_main_project.main_project_id,\n \"IsActive\": vm.is_active\n };\n contactFactory.updateContact(id, DTO).then(function (response) {\n $rootScope.updateContacts();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(); // Pass in returned item here.\n };\n\n vm.deleteItem = function () {\n contactFactory.deleteContact(id).then(function (response) {\n $rootScope.updateContacts();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(); // Pass in returned item here.\n };\n\n vm.setFormTypeManage = function () {\n vm.formType = 'manage';\n };\n vm.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n vm.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n vm.isValidEmail = function (input) {\n return inputValidationService.isValidEmail(input);\n };\n vm.validateForm = function () {\n vm.updateIsValid();\n vm.isValidated = true;\n };\n vm.updateIsValid = function () {\n vm.isValid = inputValidationService.isValidInput(vm.name) && inputValidationService.isValidInput(vm.phone) && inputValidationService.isValidEmail(vm.email);\n return vm.isValid;\n };\n vm.inputLengthLimits = {\n name: 100,\n company: 100,\n phone: InputLengthLimits.PHONE,\n email: InputLengthLimits.EMAIL,\n description: 1000\n };\n}]);\n'use strict';\n\ncontrollers.controller('LocationController', ['$uibModal', '$scope', '$rootScope', '$filter', 'locationFactory', '$translate', 'errorService', '$localStorage', 'roleService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, locationFactory, $translate, errorService, $localStorage, roleService, keyCodes) {\n $scope.isAdmin = roleService.isAdmin();\n $scope.locationLevelIndexDepth = 0;\n $scope.sortCol = \"sort_order\";\n var nonCollapsedNodeCollection = [];\n var rulesApplied = false;\n var sessionMainProject = $localStorage.user.session_main_project;\n\n // For ng-repeat\n $scope.getEmptyLevels = function (levels) {\n if (levels <= 2) {\n return;\n }\n return new Array(levels);\n };\n locationFactory.getLocationTreeRules(sessionMainProject.division_id).then(function (response) {\n $scope.locationTreeRules = response.data;\n if (!rulesApplied && $scope.locations.length) applyLocationTreeRules();\n }, function (error) {\n errorService.handleError(error);\n });\n $rootScope.reloadTable = function () {\n if (!sessionMainProject) return;\n $scope.locations = [];\n locationFactory.getLocations(sessionMainProject.main_project_id).then(function (response) {\n var data = response.data;\n var locations = locationFactory.repackageDTOArray(data);\n findTreeDepth(locations);\n $scope.locations = $filter('orderBy')(locations, 'sort_order');\n $scope.totalItems = $scope.locations.length;\n if (!rulesApplied && $scope.locationTreeRules) applyLocationTreeRules();\n if (nonCollapsedNodeCollection.length > 0) reopenNodeTree(nonCollapsedNodeCollection, $scope.locations);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $rootScope.reloadTable();\n\n // LocationTreeRules start\n function applyLocationTreeRules() {\n angular.forEach($scope.locations, function (location) {\n location.possibleChildren = getLocationChildren(location.location_type_id);\n });\n }\n function getLocationChildren(locationTypeId) {\n var possibleChildren = [];\n angular.forEach($scope.locationTreeRules, function (rule) {\n if (rule.LocationTypeId === locationTypeId) {\n possibleChildren = rule.ChildLocationTypeIds;\n }\n });\n return possibleChildren;\n }\n // LocationTreeRules end\n\n function findTreeDepth(tree) {\n angular.forEach(tree, function (node) {\n if (node.level > $scope.locationLevelIndexDepth) {\n $scope.locationLevelIndexDepth = node.level;\n }\n });\n }\n function isUnique(array, idKey, id) {\n var unique = true;\n array.forEach(function (entry, index) {\n if (entry[idKey] === id) {\n unique = false;\n }\n });\n return unique;\n }\n $scope.hasChildren = function (location) {\n var hasAnyChild = $scope.locations.some(function (l) {\n return l.parent_location_id === location.location_id;\n });\n return hasAnyChild;\n };\n function getChildLocations(parent) {\n var children = $filter('filter')($scope.locations, function (l) {\n return l.parent_location_id === parent.location_id;\n });\n return children;\n }\n $scope.expandSection = function (location) {\n if (location.collapsed) {\n $scope.toggleNode(location);\n }\n var children = getChildLocations(location);\n angular.forEach(children, function (child) {\n child.show = true;\n });\n };\n $scope.collapseSection = function (location) {\n if (!location.collapsed) {\n $scope.toggleNode(location);\n }\n var children = getChildLocations(location);\n angular.forEach(children, function (child) {\n child.show = false;\n $scope.collapseSection(child); // Collapse all sub-sections\n });\n };\n\n $scope.updateCollapsed = function () {\n angular.forEach($scope.locations, function (location) {\n var parent = findParent(location);\n if (!parent) {\n location.show = true; // Always show first node\n } else {\n location.show = !parent.collapsed;\n }\n });\n };\n\n // Toggles and remembers wich are opened. Reopen on table refresh\n $scope.toggleNode = function (node) {\n node.collapsed = !node.collapsed;\n if (!node.collapsed) {\n nonCollapsedNodeCollection.push(node);\n } else {\n var index = nonCollapsedNodeCollection.indexOf(node);\n nonCollapsedNodeCollection.splice(index, 1);\n }\n };\n function reopenNodeTree(nonCollapsedNodeCollection, locations) {\n // Update collapsed = false from saved collection\n angular.forEach(nonCollapsedNodeCollection, function (savedNode) {\n angular.forEach(locations, function (node) {\n if (savedNode.location_id === node.location_id) {\n node.collapsed = false;\n }\n });\n });\n // Open table\n $scope.updateCollapsed();\n }\n ;\n function findParent(node) {\n var parent = $scope.locations.find(function (l) {\n return l.location_id === node.parent_location_id;\n });\n return parent;\n }\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.searchLocationTree($scope.pendingSearchString);\n }\n };\n $scope.searchLocationTree = function (locationName) {\n var lastsibbling = null;\n var pattern = new RegExp('.*' + locationName + '.*', 'i');\n resetSearchedNode();\n resetSearchedPath();\n angular.forEach($scope.locations, function (data, index) {\n if (pattern.test(data.location_name)) {\n data.searched_node = true;\n lastsibbling = findLastSibbling(data, index);\n lightUpAndExpandPath(lastsibbling[0], lastsibbling[1]);\n }\n });\n };\n function findLastSibbling(node, index) {\n var nodeLevel = node.level;\n var sibbling = null;\n var sibblingIndex = null;\n var currentNode = null;\n for (var i = index; i < $scope.locations.length; i++) {\n currentNode = $scope.locations[i];\n if (currentNode.level !== nodeLevel) {\n break;\n }\n if (currentNode.level === node.level) {\n sibbling = currentNode;\n sibblingIndex = index;\n }\n }\n\n // Is at least self\n return [sibbling, sibblingIndex];\n }\n function lightUpAndExpandPath(endNode, index) {\n var endNodeLevel = endNode.level;\n if (endNodeLevel === 0) {\n return;\n }\n var currentNode = null;\n var currentPathLevel = endNode.level;\n var prevNodeParentId = endNode.parent_location_id;\n endNode.show = true;\n for (var i = index; i >= 0; i--) {\n currentNode = $scope.locations[i];\n if (currentNode.level < currentPathLevel) {\n currentPathLevel = currentNode.level;\n }\n if (currentNode.level === currentPathLevel) {\n currentNode.show = true;\n }\n if (currentNode.location_id === prevNodeParentId) {\n currentNode.searched_path = true;\n currentNode.collapsed = false;\n prevNodeParentId = currentNode.parent_location_id;\n currentNode = $scope.locations[i];\n }\n if (currentNode.level === 0) {\n break;\n }\n }\n }\n $scope.closeTree = function () {\n angular.forEach($scope.locations, function (data, index) {\n data.show = false;\n data.collapsed = true;\n data.searched_path = false;\n data.searched_node = false;\n });\n };\n $scope.openTree = function () {\n angular.forEach($scope.locations, function (data, index) {\n data.show = true;\n data.collapsed = false;\n data.searched_path = false;\n data.searched_node = false;\n });\n };\n function resetSearchedNode() {\n angular.forEach($scope.locations, function (data, index) {\n data.searched_node = false;\n });\n }\n function resetSearchedPath() {\n angular.forEach($scope.locations, function (data, index) {\n data.searched_path = false;\n });\n }\n\n // --- MODAL - CREATE ---\n $scope.createLocation = function (parentId, _possibleChildren) {\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/location/location_form.html',\n controller: 'LocationInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create_location';\n },\n id: function id() {\n return parentId;\n },\n possibleChildren: function possibleChildren() {\n return _possibleChildren;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n\n // --- MODAL - VIEW UNLOADING PLACE ---\n $scope.viewLocation = function (_id, _possibleChildren2) {\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/location/location_form.html',\n controller: 'LocationInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view_location';\n },\n id: function id() {\n return _id;\n },\n possibleChildren: function possibleChildren() {\n return _possibleChildren2;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n $scope.$on('updatedUserData', function (event) {\n $rootScope.reloadTable();\n });\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('LocationInstanceController', ['$uibModalInstance', 'form_type', 'id', 'possibleChildren', '$scope', '$rootScope', 'locationFactory', '$translate', 'errorService', 'inputValidationService', 'generalHelperService', function ($uibModalInstance, form_type, id, possibleChildren, $scope, $rootScope, locationFactory, $translate, errorService, inputValidationService, generalHelperService) {\n $scope.validated = false;\n $scope.form_type = form_type;\n if (form_type === 'view_location') {\n locationFactory.getLocation(id).then(function (response) {\n var data = response.data;\n $scope.location = locationFactory.repackageDTO(data);\n doChecks($scope.location.location_type_id);\n $scope.location.location_type_name = $translate.instant($scope.getChildTranslationKey($scope.location.location_type_id));\n }, errorService.handleError);\n } else if (form_type === 'create_location') {\n $scope.location = {\n possibleChildren: possibleChildren,\n parent_location_id: id\n };\n $scope.canEditScannable = true;\n $scope.canEditBaseData = true;\n }\n function doChecks(typeId) {\n checkCanEditScannable(typeId);\n checkCanEditBaseData(typeId);\n }\n function checkCanEditScannable(typeId) {\n $scope.canEditScannable = !(typeId === LocationTypeEnum.MAIN_PROJECT || typeId === LocationTypeEnum.PROJECT || typeId === LocationTypeEnum.VEHICLE || typeId === LocationTypeEnum.GROUPAGE_AREA);\n }\n ;\n function checkCanEditBaseData(typeId) {\n $scope.canEditBaseData = !(typeId === LocationTypeEnum.MAIN_PROJECT || typeId === LocationTypeEnum.PROJECT || typeId === LocationTypeEnum.SUB_PROJECT || typeId === LocationTypeEnum.VEHICLE || typeId === LocationTypeEnum.GROUPAGE_AREA);\n }\n ;\n\n // Finalizing or exiting form\n $scope.create = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var locations = [];\n var DTO = locationFactory.createDTO($scope.location);\n locations.push(DTO);\n\n // Create multiple locations\n if ($scope.addMultipleLocations) {\n locations = [];\n var index = $scope.number_start;\n for (var i = 0; i < $scope.n_locations; i++) {\n locations.push(jQuery.extend({}, DTO));\n locations[i].Name += index;\n index++;\n }\n }\n locations.forEach(function (data) {\n locationFactory.createLocation(data).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n });\n $uibModalInstance.close(); // Pass in returned item here.\n };\n\n $scope.activation = function (isActive) {\n $scope.validated = true;\n if (!$scope.validateForm()) return;\n if (isActive) {\n locationFactory.activateLocation($scope.location.location_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n locationFactory.deactivateLocation($scope.location.location_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n $uibModalInstance.close(); // Pass in returned item here.\n };\n\n $scope.update = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = locationFactory.createDTO($scope.location);\n DTO['IsActive'] = $scope.location.is_active;\n locationFactory.updateLocation(DTO.LocationId, DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(); // Pass in returned item here.\n };\n\n $scope.delete = function () {\n locationFactory.deleteLocation($scope.location.location_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(); // Pass in returned item here.\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n $scope.validateForm = function () {\n $scope.formValid = inputValidationService.isValidInput($scope.location.location_type_name) && inputValidationService.isValidInput($scope.location.location_name);\n if ($scope.formValid && $scope.addMultipleLocations) {\n $scope.formValid = inputValidationService.isValidInput($scope.number_start) && inputValidationService.isValidInput($scope.n_locations);\n }\n return $scope.formValid;\n };\n $scope.getChildTranslationKey = function (childLocationTypeId) {\n return generalHelperService.getKeyByValue(LocationTypeEnum, childLocationTypeId);\n };\n $scope.inputLengthLimits = {\n vehicle_drop: 30,\n floor: 20,\n room: 20,\n position: 20,\n other: 20\n };\n $scope.getInputLengthLimit = function () {\n if (!$scope.location) {\n return 100;\n }\n switch ($scope.location.location_type_id) {\n case LocationTypeEnum.VEHICLE_DROP:\n return $scope.inputLengthLimits.vehicle_drop;\n case LocationTypeEnum.FLOOR:\n return $scope.inputLengthLimits.floor;\n case LocationTypeEnum.ROOM:\n return $scope.inputLengthLimits.room;\n case LocationTypeEnum.POSITION:\n return $scope.inputLengthLimits.position;\n case LocationTypeEnum.OTHER:\n return $scope.inputLengthLimits.other;\n default:\n return 100;\n }\n };\n}]);\n'use strict';\n\ncontrollers.controller('MainProjectController', ['$uibModal', '$scope', '$rootScope', '$filter', 'mainProjectFactory', 'errorService', 'userFactory', 'roleService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, mainProjectFactory, errorService, userFactory, roleService, keyCodes) {\n $scope.isAdmin = roleService.isAdmin();\n $scope.innerRange = 5;\n $scope.currentPage = 1;\n $scope.itemRangeBottom = 0;\n $scope.itemRangeTop = 14;\n $scope.itemRange = 15;\n $scope.selectedAny = false;\n $scope.selectedAll = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.hasMixedSelection = false;\n $scope.showInactive = false;\n $scope.searchString = '';\n $scope.keyCode = '';\n $scope.lastSortCol = 'main_project_name';\n $scope.sortCol = 'main_project_name'; // set the default sort \n $scope.sortReverse = false; // set the default sort order\n $scope.sortReverseFn = function () {\n if ($scope.lastSortCol === $scope.sortCol && !$scope.sortReverse) {\n $scope.sortReverse = true;\n } else {\n $scope.lastSortCol = $scope.sortCol;\n $scope.sortReverse = false;\n }\n };\n var selected = [];\n $rootScope.reloadTable = function () {\n $scope.selectedAll = false;\n $scope.selectedAny = false;\n mainProjectFactory.getMainProjects().then(function (response) {\n var data = response.data;\n $scope.main_projects = mainProjectFactory.repackageDTOArray(data);\n $scope.totalItems = $scope.main_projects.length; // Data from external models must be loaded after projects are set.\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $rootScope.reloadTable();\n $scope.checkAll = function () {\n if (!$scope.selectedAll) {\n $scope.unCheckAll();\n return;\n }\n var filtered = getVisibleItems($scope.main_projects);\n angular.forEach(filtered, function (p) {\n p.selected = true;\n });\n $scope.updateSelection();\n };\n $scope.unCheckAll = function () {\n angular.forEach($scope.main_projects, function (p) {\n p.selected = false;\n });\n $scope.updateSelection();\n };\n $scope.updateSelection = function () {\n var oneActiveSelected = false;\n var oneInactiveSelected = false;\n var filtered = getVisibleItems($scope.main_projects);\n $scope.selectedAny = false;\n selected = [];\n angular.forEach(filtered, function (p) {\n if (!$scope.selectedAny && p.selected) {\n $scope.selectedAny = true;\n }\n if (p.selected) {\n selected.push(p);\n }\n if (!oneActiveSelected && p.is_active && p.selected) {\n oneActiveSelected = true;\n }\n if (!oneInactiveSelected && !p.is_active && p.selected) {\n oneInactiveSelected = true;\n }\n });\n if (!$scope.selectedAny) {\n $scope.selectedAll = false;\n }\n\n // Mixed selection\n if (oneActiveSelected && oneInactiveSelected) {\n $scope.hasMixedSelection = true;\n $scope.hasActiveSelection = true;\n $scope.hasInactiveSelection = true;\n } else {\n $scope.hasMixedSelection = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n }\n\n //Active selction\n if (oneActiveSelected && !oneInactiveSelected) {\n $scope.hasActiveSelection = true;\n } else $scope.hasActiveSelection = false;\n\n //Inactive selction\n if (!oneActiveSelected && oneInactiveSelected) {\n $scope.hasInactiveSelection = true;\n } else $scope.hasInactiveSelection = false;\n };\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.searchString = $scope.pendingSearchString;\n $scope.updateFullTableRange();\n }\n };\n $scope.updateFullTableRange = function () {\n $scope.updateSelection();\n var filtered = getVisibleItems($scope.main_projects);\n $scope.totalItems = filtered.length;\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.currentPage - 1) * $scope.itemRange;\n };\n\n // --- MODAL - CREATE ---\n $scope.createMainProject = function () {\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/main_project/main_project_form.html',\n controller: 'MainProjectInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create_main_project';\n },\n id: function id() {\n return -1;\n }\n }\n });\n modalInstance.result.then(function (results) {\n userFactory.setUserData(true);\n });\n };\n $scope.activateMainProjects = function (isActive) {\n selected.forEach(function (data) {\n if (isActive) {\n mainProjectFactory.activateMainProject(data.main_project_id).then(function (response) {\n $rootScope.reloadTable();\n userFactory.setUserData(true);\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n mainProjectFactory.deactivateMainProject(data.main_project_id).then(function (response) {\n $rootScope.reloadTable();\n userFactory.setUserData(true);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n });\n };\n function getVisibleItems(array) {\n var filtered = array;\n if (!$scope.showInactive) {\n filtered = $filter('inactive')(filtered, $scope.showInactive);\n }\n if ($scope.searchString) {\n filtered = $filter('filter')(filtered, $scope.searchString);\n }\n return filtered;\n }\n\n // --- MODAL - VIEW UNLOADING PLACE ---\n $scope.viewMainProject = function (_id) {\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/main_project/main_project_form.html',\n controller: 'MainProjectInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view_main_project';\n },\n id: function id() {\n return _id;\n }\n }\n });\n modalInstance.result.then(function (results) {\n userFactory.setUserData(true);\n });\n };\n $scope.$on('mainProjectsRepeatFinished', function (mainProjectsRepeatFinishedEvent) {\n $scope.updateFullTableRange();\n });\n $scope.$on('updatedUserData', function (event) {\n $rootScope.reloadTable();\n });\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('MainProjectInstanceController', ['$uibModalInstance', 'form_type', 'id', '$scope', '$rootScope', 'mainProjectFactory', 'divisionFactory', 'inputValidationService', 'userFactory', 'errorService', 'InputLengthLimits', function ($uibModalInstance, form_type, id, $scope, $rootScope, mainProjectFactory, divisionFactory, inputValidationService, userFactory, errorService, InputLengthLimits) {\n $scope.main_project = {};\n $scope.validated = false;\n $scope.form_type = form_type;\n if (form_type === 'view_main_project') {\n mainProjectFactory.getMainProject(id).then(function (response) {\n var data = response.data;\n var mainProject = mainProjectFactory.repackageDTO(data);\n $scope.main_project = mainProject;\n loadLesParameterList(id);\n loadValuesFromDTO();\n }, function (error) {\n errorService.handleError(error);\n });\n } else if (form_type === 'create_main_project') {\n loadLesParameterList(id);\n $scope.main_project.is_direct_delivery_function_enabled = true;\n }\n function loadDivisions() {\n divisionFactory.getDivisions().then(function (response) {\n var data = response.data;\n $scope.divisions = divisionFactory.repackageDTOArray(data);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n ;\n loadDivisions();\n $scope.isLesParameterInactive = function (lesParameterTypeId) {\n // Gates disabled until further notice as of SPL338.\n if (lesParameterTypeId === LesParameterTypeEnum.GATE_BASE_ADDRESS || lesParameterTypeId === LesParameterTypeEnum.GATE_USERNAME || lesParameterTypeId === LesParameterTypeEnum.GATE_API_PASSWORD) {\n return true;\n }\n return false;\n };\n function loadLesParameterList(mainProjectId) {\n var lesParameters = [];\n angular.forEach(LesParameterTypeEnum, function (value, key) {\n lesParameters.push({\n MainProjectId: mainProjectId ? mainProjectId : null,\n LesParameterId: undefined,\n // The db will assign a unique key\n LesParameterTypeName: key,\n LesParameterTypeId: value,\n Value: ''\n });\n });\n $scope.main_project.les_parameters = lesParameters;\n }\n function loadValuesFromDTO() {\n angular.forEach($scope.main_project.les_parameters, function (les) {\n angular.forEach($scope.main_project.les_parameters_dto, function (lesDTO) {\n if (les.LesParameterTypeId == lesDTO.LesParameterTypeId) {\n les.Value = lesDTO.Value;\n les.LesParameterId = lesDTO.LesParameterId;\n }\n });\n });\n }\n\n // Finalizing or exiting form\n $scope.create = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = mainProjectFactory.createDTO($scope.main_project);\n DTO['IsActive'] = true;\n var results = '';\n mainProjectFactory.createMainProject(DTO).then(function (response) {\n userFactory.setUserData(true); // Refreshes available mainprojects in header, force refresh\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(results); // Pass in returned item here.\n };\n\n $scope.activation = function (isActive) {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n if (isActive) {\n mainProjectFactory.activateMainProject($scope.main_project.main_project_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n mainProjectFactory.deactivateMainProject($scope.main_project.main_project_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n var results = '';\n $uibModalInstance.close(results); // Pass in returned item here.\n };\n\n $scope.update = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = mainProjectFactory.createDTO($scope.main_project);\n var results = '';\n mainProjectFactory.updateMainProject(DTO.MainProjectId, DTO).then(function (response) {\n $rootScope.reloadTable();\n userFactory.setUserData(true);\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(results); // Pass in returned item here.\n };\n\n $scope.delete = function () {\n var results = '';\n mainProjectFactory.deleteMainProject($scope.main_project.main_project_id).then(function (response) {\n userFactory.setUserData(true); // Refreshes available mainprojects, force refresh = true\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(results); // Pass in returned item here.\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n $scope.validateForm = function () {\n $scope.formValid = inputValidationService.isValidInput($scope.main_project.main_project_name) && inputValidationService.isValidInput($scope.main_project.groupage_area_name) && inputValidationService.isValidInput($scope.main_project.city) && inputValidationService.isValidInput($scope.main_project.division_name) && inputValidationService.isValidInput($scope.main_project.external_support_phone_number) && inputValidationService.isValidInput($scope.main_project.external_support_email) && inputValidationService.isValidInput($scope.main_project.main_project_article_number) && inputValidationService.isValidInput($scope.main_project.main_project_hours_to_min_order_date);\n return $scope.formValid;\n };\n $scope.inputLengthLimits = {\n main_project_name: 30,\n groupage_area_name: 30,\n phone: InputLengthLimits.PHONE,\n email: InputLengthLimits.EMAIL\n };\n}]);\n'use strict';\n\ncontrollers.controller('MainProjectFileController', ['$uibModal', 'roleService', 'errorService', '$scope', '$rootScope', '$localStorage', 'mainProjectFileFactory', function ($uibModal, roleService, errorService, $scope, $rootScope, $localStorage, mainProjectFileFactory) {\n $scope.hasEditPermission = roleService.isAdmin() || roleService.isServicenter() || roleService.isProjectOwner();\n $scope.mainProjectFiles = [];\n $rootScope.updateMainProjectFiles = function () {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) return;\n mainProjectFileFactory.getMainProjectFiles(sessionMainProject.main_project_id).then(function (response) {\n var data = response.data;\n $scope.mainProjectFiles = mainProjectFileFactory.repackageDTOArray(data);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n\n // Table bindings\n $scope.tableHeaderItems = [{\n propertyName: 'header',\n translateName: 'TITLE'\n }, {\n propertyName: 'fileName',\n translateName: 'FILE'\n }, {\n propertyName: 'comments',\n translateName: 'COMMENTS'\n }, {\n propertyName: 'fileUploaded',\n translateName: 'DATE'\n }, {\n propertyName: 'file',\n translateName: 'DOWNLOAD'\n }];\n $rootScope.updateMainProjectFiles();\n\n // --- MODAL - CREATE ---\n $scope.createMainProjectFile = function () {\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/main_project_file/main_project_file_form.html',\n controller: 'MainProjectFileInstanceController',\n controllerAs: 'vm',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n formType: function formType() {\n return 'create';\n },\n id: function id() {\n return -1;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n\n // --- MODAL - VIEW ---\n $scope.viewMainProjectFile = function (item) {\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/main_project_file/main_project_file_form.html',\n controller: 'MainProjectFileInstanceController',\n controllerAs: 'vm',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n formType: function formType() {\n return 'view';\n },\n id: function id() {\n return item.mainProjectFileId;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n\n // Events\n $scope.$on('updatedUserData', function (event) {\n $rootScope.updateMainProjectFiles();\n });\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('MainProjectFileInstanceController', ['$uibModalInstance', '$localStorage', '$rootScope', 'formType', 'inputValidationService', 'roleService', 'errorService', 'mainProjectFileFactory', 'id', function ($uibModalInstance, $localStorage, $rootScope, formType, inputValidationService, roleService, errorService, mainProjectFileFactory, id) {\n var vm = this;\n vm.id = id;\n vm.formType = formType;\n vm.showErrors = false;\n vm.filename = \"\", vm.isValidInput = false;\n vm.hasEditPermission = roleService.isAdmin() || roleService.isServicenter() || roleService.isProjectOwner();\n vm.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n if (formType === 'view') {\n mainProjectFileFactory.getMainProjectFile(id).then(function (response) {\n var data = response.data;\n vm.mainProjectFileId = vm.id;\n vm.filename = data.File != null ? data.File.FileName : \"\", vm.header = data.Header;\n vm.comments = data.Comments;\n }, function (error) {\n errorService.handleError(error);\n });\n }\n vm.createItem = function () {\n vm.showErrors = true;\n if (!vm.validateForm()) {\n return;\n }\n var DTO = {\n \"MainProjectId\": $localStorage.user.session_main_project.main_project_id,\n \"Header\": vm.header,\n \"Comments\": vm.comments\n };\n mainProjectFileFactory.createMainProjectFile(DTO, vm.file).then(function (response) {\n $rootScope.updateMainProjectFiles();\n $uibModalInstance.close();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.updateItem = function () {\n vm.showErrors = true;\n if (!vm.validateForm()) {\n return;\n }\n var DTO = {\n \"MainProjectId\": $localStorage.user.session_main_project.main_project_id,\n \"Header\": vm.header,\n \"Comments\": vm.comments\n };\n mainProjectFileFactory.updateMainProjectFile(id, DTO, vm.file).then(function (response) {\n $rootScope.updateMainProjectFiles();\n $uibModalInstance.close();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.deleteItem = function () {\n mainProjectFileFactory.deleteMainProjectFile(id).then(function (response) {\n $rootScope.updateMainProjectFiles();\n $uibModalInstance.close();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.setFormTypeManage = function () {\n vm.formType = 'manage';\n };\n vm.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n vm.validateForm = function () {\n return inputValidationService.isValidInput(vm.header) && vm.isValidFile;\n };\n vm.onFileSelected = function (newFile, isValid) {\n vm.file = newFile;\n vm.isValidFile = isValid;\n };\n}]);\n'use strict';\n\ncontrollers.controller('ProjectController', ['$uibModal', '$scope', '$rootScope', '$filter', 'projectFactory', 'errorService', '$localStorage', 'roleService', function ($uibModal, $scope, $rootScope, $filter, projectFactory, errorService, $localStorage, roleService) {\n $scope.isAdmin = roleService.isAdmin();\n $scope.isServicenter = roleService.isServicenter();\n $scope.isProjectOwner = roleService.isProjectOwner();\n $scope.projects = [];\n $rootScope.updateProjects = function () {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) return;\n projectFactory.getProjects(sessionMainProject.main_project_id, true).then(function (response) {\n var data = response.data;\n $scope.projects = projectFactory.repackageDTOArray(data);\n $scope.filterInactiveProjects();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n\n // Table bindings\n $scope.tableItems = $scope.projects;\n $scope.selectedProjects = [];\n $scope.tableHeaderItems = [{\n propertyName: 'project_name',\n translateName: 'PROJECT'\n }, {\n propertyName: 'project_short_name',\n translateName: 'PROJECT_NUMBER'\n }, {\n propertyName: 'city',\n translateName: 'CITY'\n }, {\n propertyName: 'gate_in_name',\n translateName: 'GATES_IN'\n }, {\n propertyName: 'gate_out_name',\n translateName: 'GATES_OUT'\n }, {\n propertyName: 'is_active',\n translateName: 'ACTIVE'\n }];\n\n // Handle active/inactive projects\n $scope.showInactive = {\n value: false\n }; // Wrap in object to bind ng-model to correct scope\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.filterInactiveProjects = function () {\n $scope.tableItems = $filter('inactive')($scope.projects, $scope.showInactive.value);\n };\n $scope.activateProjects = function (setToActive) {\n $scope.selectedProjects.forEach(function (project) {\n if (setToActive) {\n projectFactory.activateProject(project.project_id).then(function (response) {\n $rootScope.updateProjects();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n projectFactory.deactivateProject(project.project_id).then(function (response) {\n $rootScope.updateProjects();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n });\n };\n $rootScope.updateProjects(); // Initialize projects\n\n $scope.$watchCollection('selectedProjects', function () {\n if ($scope.selectedProjects.length === 0) {\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n } else {\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n angular.forEach($scope.selectedProjects, function (project) {\n if (project.is_active) {\n $scope.hasActiveSelection = true;\n } else {\n $scope.hasInactiveSelection = true;\n }\n });\n }\n });\n\n // --- MODAL - CREATE ---\n var animationsEnabled = true;\n $scope.createProject = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/project/project_form.html',\n controller: 'ProjectInstanceController',\n controllerAs: 'vm',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create';\n },\n id: function id() {\n return -1;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n\n // --- MODAL - VIEW ---\n $scope.viewProject = function (project) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/project/project_form.html',\n controller: 'ProjectInstanceController',\n controllerAs: 'vm',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view';\n },\n id: function id() {\n return project.project_id;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n\n // Events\n $scope.$on('updatedUserData', function (event) {\n $rootScope.updateProjects();\n });\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('ProjectInstanceController', ['$uibModalInstance', 'form_type', 'id', '$rootScope', 'projectFactory', 'errorService', 'inputValidationService', '$localStorage', 'roleService', function ($uibModalInstance, form_type, id, $rootScope, projectFactory, errorService, inputValidationService, $localStorage, roleService) {\n var vm = this;\n vm.validated = false;\n vm.form_type = form_type;\n vm.isAdmin = roleService.isAdmin();\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) $uibModalInstance.dismiss('cancel');\n if (form_type === 'view') {\n projectFactory.getProject(id).then(function (response) {\n var data = response.data;\n vm.project_id = id;\n vm.project_name = data.Name;\n vm.project_short_name = data.ShortName;\n vm.main_project_id = data.MainProjectId;\n vm.main_project_name = data.MainProjectName;\n vm.gate_in_id = data.DefaultGateInId;\n vm.gate_in_name = data.DefaultGateInName;\n vm.gate_out_id = data.DefaultGateOutId;\n vm.gate_out_name = data.DefaultGateOutName;\n vm.zip_code = parseInt(data.ZipCode);\n vm.city = data.City;\n vm.is_active = data.IsActive;\n vm.comments = data.Comments;\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n vm.main_project_id = sessionMainProject.main_project_id;\n vm.main_project_name = sessionMainProject.main_project_name;\n }\n\n // Finalizing or exiting form\n vm.createItem = function () {\n vm.validated = true;\n if (!vm.validateForm()) {\n return;\n }\n var DTO = {\n \"Name\": vm.project_name,\n \"ProjectId\": vm.project_id,\n \"ShortName\": vm.project_short_name,\n \"MainProjectId\": vm.main_project_id,\n \"MainProjectName\": vm.main_project_name,\n \"DefaultInGateId\": vm.gate_in_id,\n \"DefaultInGateName\": vm.gate_in_name,\n \"DefaultOutGateId\": vm.gate_out_id,\n \"DefaultOutGateName\": vm.gate_out_name,\n \"ZipCode\": vm.zip_code,\n \"City\": vm.city,\n \"IsActive\": true,\n \"Comments\": vm.comments\n };\n projectFactory.createProject(DTO).then(function (response) {\n $rootScope.updateProjects();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close();\n };\n vm.activation = function (isActive) {\n vm.validated = true;\n if (!vm.validateForm()) {\n return;\n }\n if (isActive) {\n projectFactory.activateProject(vm.project_id).then(function (response) {\n $rootScope.updateProjects();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n projectFactory.deactivateProject(vm.project_id).then(function (response) {\n $rootScope.updateProjects();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n $uibModalInstance.close();\n };\n vm.updateItem = function () {\n vm.validated = true;\n if (!vm.validateForm()) {\n return;\n }\n var DTO = {\n \"ProjectId\": vm.project_id,\n \"Name\": vm.project_name,\n \"ShortName\": vm.project_short_name,\n \"MainProjectId\": vm.main_project_id,\n \"MainProjectName\": vm.main_project_name,\n \"DefaultInGateId\": vm.gate_in_id,\n \"DefaultInGateName\": vm.gate_in_name,\n \"DefaultOutGateId\": vm.gate_out_id,\n \"DefaultOutGateName\": vm.gate_out_name,\n \"ZipCode\": vm.zip_code,\n \"City\": vm.city,\n \"IsActive\": vm.is_active,\n \"Comments\": vm.comments\n };\n projectFactory.updateProject(DTO.ProjectId, DTO).then(function (response) {\n $rootScope.updateProjects();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(); // Pass in returned item here.\n };\n\n vm.deleteItem = function () {\n projectFactory.deleteProject(vm.project_id).then(function (response) {\n $rootScope.updateProjects();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(); // Pass in returned item here.\n };\n\n vm.setFormTypeManage = function () {\n vm.form_type = 'manage';\n };\n vm.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n vm.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n vm.validateForm = function () {\n vm.formValid = inputValidationService.isValidInput(vm.project_name) && inputValidationService.isValidInput(vm.main_project_name) && inputValidationService.isValidInput(vm.city) && inputValidationService.isValidInput(vm.zip_code);\n return vm.formValid;\n };\n vm.inputLengthLimits = {\n project_name: 20\n };\n}]);\n'use strict';\n\ncontrollers.controller('SubProjectController', ['$uibModal', '$scope', '$rootScope', '$filter', 'subProjectFactory', 'errorService', '$localStorage', 'roleService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, subProjectFactory, errorService, $localStorage, roleService, keyCodes) {\n $scope.isAdmin = roleService.isAdmin();\n $scope.isServicenter = roleService.isServicenter();\n $scope.isProjectOwner = roleService.isProjectOwner();\n $scope.subProjects = [];\n $rootScope.reloadTable = function () {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) return;\n subProjectFactory.getSubProjects(sessionMainProject.main_project_id, true).then(function (response) {\n var data = response.data;\n $scope.subProjects = subProjectFactory.repackageDTOArray(data);\n $scope.filterInactiveItems();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n\n // Table bindings\n $scope.tableItems = $scope.subProjects;\n $scope.selectedItems = [];\n $scope.tableHeaderItems = [{\n propertyName: 'sub_project_name',\n translateName: 'SUB_PROJECT'\n }, {\n propertyName: 'sub_project_short_name',\n translateName: 'SUB_PROJECT_NUMBER'\n }, {\n propertyName: 'project_name',\n translateName: 'PROJECT'\n }, {\n propertyName: 'is_active',\n translateName: 'ACTIVE'\n }];\n\n // Handle active/inactive\n $scope.showInactive = {\n value: false\n }; // Wrap in object to bind ng-model to correct scope\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.filterInactiveItems = function () {\n $scope.tableItems = $filter('inactive')($scope.subProjects, $scope.showInactive.value);\n };\n $scope.activateSelectedItems = function (setToActive) {\n $scope.selectedItems.forEach(function (data) {\n if (setToActive) {\n subProjectFactory.activateSubProject(data.sub_project_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n subProjectFactory.deactivateSubProject(data.sub_project_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n });\n };\n $rootScope.reloadTable(); // Initialize table\n\n $scope.$watchCollection('selectedItems', function () {\n if ($scope.selectedItems.length === 0) {\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n } else {\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n angular.forEach($scope.selectedItems, function (subProject) {\n if (subProject.is_active) {\n $scope.hasActiveSelection = true;\n } else {\n $scope.hasInactiveSelection = true;\n }\n });\n }\n });\n\n // --- MODAL - CREATE ---\n var animationsEnabled = true;\n $scope.createSubProject = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/sub_project/sub_project_form.html',\n controller: 'SubProjectInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create_sub_project';\n },\n id: function id() {\n return -1;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n\n // --- MODAL - VIEW SUB PROJECT ---\n $scope.viewSubProject = function (subProject) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/sub_project/sub_project_form.html',\n controller: 'SubProjectInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view_sub_project';\n },\n id: function id() {\n return subProject.sub_project_id;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n\n // Events\n $scope.$on('updatedUserData', function (event) {\n $rootScope.reloadTable();\n });\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('SubProjectInstanceController', ['$uibModalInstance', 'form_type', 'id', '$scope', '$rootScope', 'subProjectFactory', 'mainProjectFactory', 'projectFactory', 'companyFactory', '$localStorage', 'errorService', function ($uibModalInstance, form_type, id, $scope, $rootScope, subProjectFactory, mainProjectFactory, projectFactory, companyFactory, $localStorage, errorService) {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) {\n errorService.handleError('No session main project');\n $uibModalInstance.dismiss('cancel');\n }\n $scope.validated = false;\n $scope.form_type = form_type;\n if (form_type === 'view_sub_project') {\n subProjectFactory.getSubProject(id).then(function (response) {\n var data = response.data;\n $scope.sub_project_id = id;\n $scope.sub_project_name = data.Name;\n $scope.sub_project_short_name = data.ShortName;\n $scope.project_id = data.ProjectId;\n $scope.project_name = data.ProjectName;\n $scope.main_project_id = data.MainProjectId;\n $scope.main_project_name = data.MainProjectName;\n $scope.contractor_id = data.OwnerCompanyId;\n $scope.contractor_name = data.OwnerCompanyName;\n $scope.building_contractor_id = data.ResponsibleCompanyId;\n $scope.building_contractor_name = data.ResponsibleCompanyName;\n $scope.is_active = data.IsActive;\n $scope.comments = data.Comments;\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n $scope.main_project_id = sessionMainProject.main_project_id;\n $scope.main_project_name = sessionMainProject.main_project_name;\n }\n\n // Populate projects list\n projectFactory.getProjects(sessionMainProject.main_project_id, false).then(function (response) {\n var data = response.data;\n $scope.projects = projectFactory.repackageDTOArray(data);\n }, function (error) {\n errorService.handleError(error);\n });\n\n // Populate company list\n companyFactory.getCompanies(false, sessionMainProject.division_id).then(function (response) {\n var data = response.data;\n $scope.companies = companyFactory.repackageCompanyDTOArray(data);\n }, function (error) {\n errorService.handleError(error);\n });\n $scope.updateProjects = function (mainProject) {\n $scope.project_name = \"\";\n $scope.project_id = null;\n $scope.projects.forEach(function (data, index) {\n if (data.main_project_id === mainProject.main_project_id) {\n data.show = true;\n } else data.show = false;\n });\n };\n\n // Finalizing or exiting form\n $scope.create = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = {\n \"Name\": $scope.sub_project_name,\n \"ShortName\": $scope.sub_project_short_name,\n \"ProjectName\": $scope.project_name,\n \"ProjectId\": $scope.project_id,\n \"OwnerCompanyId\": $scope.contractor_id,\n \"OwnerCompanyName\": $scope.contractor_name,\n \"ResponsibleCompanyId\": $scope.building_contractor_id,\n \"ResponsibleCompanyName\": $scope.building_contractor_name,\n \"IsActive\": true,\n \"Comments\": $scope.comments\n };\n var results = '';\n subProjectFactory.createSubProject(DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(results); // Pass in returned item here.\n };\n\n $scope.activation = function (isActive) {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n if (isActive) {\n subProjectFactory.activateSubProject($scope.sub_project_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n subProjectFactory.deactivateSubProject($scope.sub_project_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n var results = '';\n $uibModalInstance.close(results); // Pass in returned item here.\n };\n\n $scope.update = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = {\n \"Name\": $scope.sub_project_name,\n \"SubProjectId\": $scope.sub_project_id,\n \"ShortName\": $scope.sub_project_short_name,\n \"ProjectName\": $scope.project_name,\n \"ProjectId\": $scope.project_id,\n \"OwnerCompanyId\": $scope.contractor_id,\n \"OwnerCompanyName\": $scope.contractor_name,\n \"ResponsibleCompanyId\": $scope.building_contractor_id,\n \"ResponsibleCompanyName\": $scope.building_contractor_name,\n \"IsActive\": $scope.is_active,\n \"Comments\": $scope.comments\n };\n var results = '';\n subProjectFactory.updateSubProject(DTO.SubProjectId, DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(results); // Pass in returned item here.\n };\n\n $scope.delete = function () {\n var results = '';\n subProjectFactory.deleteSubProject($scope.sub_project_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(results); // Pass in returned item here.\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n if (input === '') {\n return false;\n } else if (typeof input === 'undefined') {\n return false;\n } else if (input === null) {\n return false;\n } else return true;\n };\n $scope.validateForm = function () {\n $scope.formValid = $scope.sub_project_name !== '' && typeof $scope.sub_project_name !== 'undefined' && $scope.project_name !== '' && typeof $scope.project_name !== 'undefined';\n return $scope.formValid;\n };\n $scope.inputLengthLimits = {\n sub_project_name: 30\n };\n}]);\n'use strict';\n\ncontrollers.controller('WorkOrderController', ['$uibModal', '$scope', '$rootScope', '$filter', 'workOrderFactory', 'errorService', '$localStorage', 'roleService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, workOrderFactory, errorService, $localStorage, roleService, keyCodes) {\n $scope.isAdmin = roleService.isAdmin();\n $scope.isServicenter = roleService.isServicenter();\n $scope.isProjectOwner = roleService.isProjectOwner();\n $scope.innerRange = 5;\n $scope.currentPage = 1;\n $scope.itemRangeBottom = 0;\n $scope.itemRangeTop = 14;\n $scope.itemRange = 15;\n $scope.searchString = '';\n $scope.keyCode = '';\n $scope.lastSortCol = 'work_order_name';\n $scope.sortCol = 'work_order_name';\n $scope.sortReverse = false;\n $scope.sortReverseFn = function () {\n if ($scope.lastSortCol === $scope.sortCol && !$scope.sortReverse) {\n $scope.sortReverse = true;\n } else {\n $scope.lastSortCol = $scope.sortCol;\n $scope.sortReverse = false;\n }\n };\n $rootScope.reloadTable = function () {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) return;\n workOrderFactory.getWorkOrders(sessionMainProject.main_project_id, true).then(function (response) {\n var data = response.data;\n $scope.work_orders = workOrderFactory.repackageWorkOrderDTOArray(data);\n $scope.totalItems = $scope.work_orders.length;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $rootScope.reloadTable();\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.searchString = $scope.pendingSearchString;\n $scope.updateFullTableRange();\n }\n };\n $scope.updateFullTableRange = function () {\n var filtered = $scope.work_orders;\n if (!$scope.showInactive) {\n filtered = $filter('inactive')(filtered, $scope.showInactive);\n }\n if ($scope.searchString) {\n filtered = $filter('filter')(filtered, $scope.searchString);\n }\n $scope.totalItems = filtered.length;\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.currentPage - 1) * $scope.itemRange;\n };\n\n // --- MODAL - CREATE ---\n var animationsEnabled = true;\n $scope.createWorkOrder = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/work_order/work_order_form.html',\n controller: 'WorkOrderInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create_work_order';\n },\n id: function id() {\n return -1;\n }\n }\n });\n modalInstance.result.then(function (results) {\n $rootScope.reloadTable();\n });\n };\n\n // --- MODAL - VIEW Work order Project ---\n $scope.viewWorkOrder = function (_id) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/projects/work_order/work_order_form.html',\n controller: 'WorkOrderInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view_work_order';\n },\n id: function id() {\n return _id;\n }\n }\n });\n modalInstance.result.then(function (results) {\n $rootScope.reloadTable();\n });\n };\n $scope.$on('workOrderRepeatFinished', function (workOrderRepeatFinishedEvent) {\n $scope.updateFullTableRange();\n });\n $scope.$on('updatedUserData', function (event) {\n $rootScope.reloadTable();\n });\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('WorkOrderInstanceController', ['$uibModalInstance', 'form_type', 'id', '$scope', '$rootScope', 'workOrderFactory', 'subProjectFactory', 'projectFactory', 'companyFactory', '$filter', 'inputValidationService', 'errorService', 'dropdownService', '$localStorage', 'InputLengthLimits', function ($uibModalInstance, form_type, id, $scope, $rootScope, workOrderFactory, subProjectFactory, projectFactory, companyFactory, $filter, inputValidationService, errorService, dropdownService, $localStorage, InputLengthLimits) {\n $scope.InputLengthLimits = InputLengthLimits;\n $scope.workOrder = {\n project_id: -1\n };\n $scope.validated = false;\n $scope.formLocked = true;\n $scope.form_type = form_type;\n $scope.dropdowns = [{\n s: 'start'\n }]; // Keeps one dropdown available always\n $scope.dropdownsList = [];\n $scope.sessionMainProject = $localStorage.user.session_main_project;\n if (!$scope.sessionMainProject) {\n errorService.handleError('No session main project');\n $uibModalInstance.dismiss('cancel');\n }\n\n // Populate projects list\n projectFactory.getProjects($scope.sessionMainProject.main_project_id, false).then(function (response) {\n var data = response.data;\n $scope.projects = projectFactory.repackageDTOArray(data);\n getSubProjects();\n }, function (error) {\n errorService.handleError(error);\n });\n function getSubProjects() {\n subProjectFactory.getSubProjects($scope.sessionMainProject.main_project_id, false).then(function (response) {\n var data = response.data;\n $scope.sub_projects = subProjectFactory.repackageDTOArray(data);\n $scope.createDropdowns();\n if (form_type === 'view_work_order') {\n getWorkOrder(); // Sets sub_projects to selected if any in workorder.\n } else if (form_type === 'create_work_order') {\n $scope.formLocked = false;\n }\n }, function (error) {\n errorService.handleError(error);\n });\n }\n if (form_type === 'create_work_order') {\n // Populate company list\n companyFactory.getCompanies(false, $scope.sessionMainProject.division_id).then(function (response) {\n var data = response.data;\n $scope.companies = companyFactory.repackageCompanyDTOArray(data);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n\n // Function definitions\n /////////////////////////\n\n $scope.loadCompany = function (company) {\n $scope.workOrder.company_name = company.company_name;\n $scope.workOrder.company_id = company.company_id;\n clearFormWorkOrder();\n companyFactory.getErpWorkOrders(company.company_id).then(function (response) {\n var data = response.data;\n $scope.erpWorkOrders = repackageErpWorkOrderDTOArray(data);\n $scope.workOrder.notificationConfiguration = company.notification_configuration;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $scope.loadErpWorkOrder = function (erpWorkOrder) {\n clearFormWorkOrder();\n $scope.workOrder.erp_system_reference = erpWorkOrder.erp_system_reference; // Not shown in view\n $scope.workOrder.erp_system_short_name = erpWorkOrder.erp_system_short_name;\n $scope.workOrder.work_order_name = erpWorkOrder.erp_system_short_name; // Work order name editable by user\n $scope.workOrder.work_order_type = erpWorkOrder.work_order_type;\n $scope.workOrder.work_order_group = erpWorkOrder.work_order_group;\n $scope.selectedErpWorkOrderDisplayName = erpWorkOrder.erp_display_name; // Shown in view\n };\n\n function repackageErpWorkOrderDTOArray(erpWorkOrderDTOArray) {\n var erpWorkOrderArray = [];\n angular.forEach(erpWorkOrderDTOArray, function (erpWorkOrderDTO) {\n erpWorkOrderArray.push(repackageErpWorkOrderDTO(erpWorkOrderDTO));\n });\n erpWorkOrderArray.sort(compareWorkOrders);\n return erpWorkOrderArray;\n }\n function repackageErpWorkOrderDTO(erpWorkOrderDTO) {\n return {\n erp_display_name: workOrderFactory.workOrderDisplayName(erpWorkOrderDTO.Name, erpWorkOrderDTO.SystemReference),\n erp_system_reference: erpWorkOrderDTO.SystemReference,\n erp_system_short_name: erpWorkOrderDTO.Name,\n work_order_type: erpWorkOrderDTO.Type,\n work_order_group: erpWorkOrderDTO.Group\n };\n }\n ;\n function compareWorkOrders(wo1, wo2) {\n return wo1.erp_display_name.localeCompare(wo2.erp_display_name);\n }\n function clearFormWorkOrder() {\n if ($scope.workOrder.erp_system_reference) {\n // If <- then the rest is loaded as well.\n delete $scope.workOrder.erp_display_name;\n delete $scope.workOrder.erp_system_reference;\n delete $scope.workOrder.work_order_id;\n delete $scope.workOrder.work_order_name;\n delete $scope.workOrder.work_order_type;\n delete $scope.workOrder.work_order_group;\n delete $scope.workOrder.contact_person;\n delete $scope.workOrder.email;\n delete $scope.workOrder.phone_number;\n }\n delete $scope.selectedErpWorkOrderDisplayName;\n }\n function getWorkOrder() {\n workOrderFactory.getWorkOrder(id).then(function (response) {\n var data = response.data;\n $scope.workOrder = workOrderFactory.repackageWorkOrderDTO(data);\n $scope.selectedErpWorkOrderDisplayName = $scope.workOrder.erp_display_name;\n loadSelectedSubProjectsToDropdowns();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n\n // Number of dropdowns is decided by how many SubProjects belonging to currently selected Project\n $scope.createDropdowns = function () {\n angular.forEach($scope.projects, function (project) {\n var dropdowns = [];\n var filteredSubProjects = $filter('filter')($scope.sub_projects, {\n project_id: project.project_id\n }, true);\n if (filteredSubProjects) {\n for (var i = 0; i < filteredSubProjects.length; i++) {\n dropdowns.push({\n tempId: i // Angular dont like to track the repeated list if empty.\n });\n }\n }\n\n $scope.dropdownsList[project.project_id] = dropdowns.length > 0 ? dropdowns : [{\n s: 'start'\n }]; // at least one empty dropdown if no SubProject\n });\n };\n\n function getNextInsertIndex(dropdowns) {\n var index = 0;\n angular.forEach(dropdowns, function (dropdown) {\n if (dropdown.subProject) {\n index++;\n }\n });\n return index;\n }\n ;\n function loadSelectedSubProjectsToDropdowns() {\n angular.forEach($scope.workOrder.sub_projects, function (selectedSubProject) {\n angular.forEach($scope.sub_projects, function (subProject) {\n if (selectedSubProject.sub_project_id === subProject.sub_project_id) {\n subProject.selected = true;\n var insertIndex = getNextInsertIndex($scope.dropdownsList[subProject.project_id]);\n $scope.dropdownsList[subProject.project_id][insertIndex].subProject = subProject;\n }\n });\n });\n }\n $scope.clearSelectedSubProjects = function () {\n angular.forEach($scope.dropdownsList[$scope.workOrder.project_id], function (dropDownSubproject) {\n angular.forEach($scope.sub_projects, function (subProject) {\n if (dropDownSubproject.subProject.sub_project_id === subProject.sub_project_id) {\n dropDownSubproject.subProject = {};\n subProject.selected = false;\n }\n });\n });\n };\n $scope.projectHasSubProject = function (project) {\n var hasSubProject = false;\n angular.forEach($scope.sub_projects, function (subP) {\n if (!hasSubProject && subP.project_id === project.project_id) {\n hasSubProject = true;\n }\n });\n return hasSubProject;\n };\n function createSubProjectsToOut() {\n var subProjectsOut = [];\n $scope.sub_projects.forEach(function (data, index) {\n if (data.selected) subProjectsOut.push(subProjectFactory.createDTO(data));\n });\n return subProjectsOut;\n }\n $scope.hasOneSelectedSubproject = function (subProjects) {\n var hasOneSelected = false;\n angular.forEach(subProjects, function (data) {\n if (!hasOneSelected && data.selected) {\n hasOneSelected = true;\n }\n });\n return hasOneSelected;\n };\n\n // If a new sub_project is selected over another the old value must be made available again.\n $scope.trySwapSubProjects = function (subProjectToRemove) {\n $scope.subProjectsCanBeDeleted = true;\n if (!subProjectToRemove) return;\n angular.forEach($scope.sub_projects, function (sp) {\n if (subProjectToRemove.sub_project_id === sp.sub_project_id) {\n sp.selected = false;\n delete sp.subProject;\n }\n });\n };\n $scope.cloneObject = function (object) {\n return jQuery.extend({}, object);\n };\n\n // Finalizing or exiting form\n $scope.create = function (updateEpix) {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n $scope.workOrder.subProjectsOut = createSubProjectsToOut();\n var workOrderDTO = workOrderFactory.packageWorkOrder($scope.workOrder);\n workOrderDTO['IsActive'] = true;\n workOrderFactory.createWorkOrder(workOrderDTO).then(function (response) {\n if (updateEpix) {\n var workOrderId = response.data;\n createEpixXML(workOrderId);\n } else {\n $uibModalInstance.close();\n }\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $scope.update = function (updateEpix) {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n $scope.workOrder.subProjectsOut = createSubProjectsToOut();\n var workOrderDTO = workOrderFactory.packageWorkOrder($scope.workOrder);\n workOrderFactory.updateWorkOrder(workOrderDTO.WorkOrderId, workOrderDTO).then(function (response) {\n if (updateEpix) {\n createEpixXML(workOrderDTO.WorkOrderId);\n } else {\n $uibModalInstance.close();\n }\n }, function (error) {\n errorService.handleError(error);\n });\n };\n function createEpixXML(workOrderId) {\n workOrderFactory.createEpixXML(workOrderId).then(function (response) {\n $uibModalInstance.close();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n $scope.delete = function () {\n workOrderFactory.deleteWorkOrder($scope.workOrder.work_order_id).then(function (response) {\n $uibModalInstance.close();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n $scope.isValidEmail = function (input) {\n return inputValidationService.isValidEmail(input);\n };\n $scope.validateForm = function () {\n $scope.formValid = inputValidationService.isValidInput($scope.workOrder.company_name) && inputValidationService.isValidInput($scope.workOrder.erp_system_reference) && inputValidationService.isValidInput($scope.workOrder.work_order_name) && inputValidationService.isValidInput($scope.workOrder.project_name) && inputValidationService.isValidInput($scope.workOrder.contact_name) && inputValidationService.isValidInput($scope.workOrder.contact_phone) && inputValidationService.isValidEmail($scope.workOrder.contact_email) && $scope.hasOneSelectedSubproject($scope.sub_projects) // If true, then project is selected as well.\n ;\n\n return $scope.formValid;\n };\n $scope.openDropdown = dropdownService.openDropdown;\n}]);\n'use strict';\n\ncontrollers.controller('DeliveryStatisticsController', ['$uibModal', '$scope', '$rootScope', '$filter', 'subProjectFactory', 'statisticsReportFactory', 'errorService', '$localStorage', 'inputValidationService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, subProjectFactory, statisticsReportFactory, errorService, $localStorage, $inputValidationService, keyCodes) {\n $scope.innerRange = 5;\n $scope.currentPage = 1;\n $scope.itemRangeBottom = 0;\n $scope.itemRangeTop = 14;\n $scope.itemRange = 15;\n $scope.selectedAny = false;\n $scope.selectedAll = false;\n $scope.searchString = '';\n $scope.keyCode = '';\n $scope.isReportGenerationEnabled = false;\n $scope.blob = null;\n $scope.reportFileName = \"delivery_statistics.xlsx\";\n $scope.reportRecordCount = 0;\n $scope.reportTotalRecordCount = 0;\n $scope.fromDate = null;\n $scope.toDate = null;\n $scope.showInactive = false;\n $scope.lastSortCol = 'sub_project_name';\n $scope.sortCol = 'sub_project_name'; // set the default sort\n $scope.sortReverse = false; // set the default sort order\n $scope.sortReverseFn = function () {\n if ($scope.lastSortCol === $scope.sortCol && !$scope.sortReverse) {\n $scope.sortReverse = true;\n } else {\n $scope.lastSortCol = $scope.sortCol;\n $scope.sortReverse = false;\n }\n };\n var selected = [];\n $rootScope.reloadTable = function () {\n $scope.selectedAll = false;\n $scope.selectedAny = false;\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) return;\n subProjectFactory.getSubProjects(sessionMainProject.main_project_id, true).then(function (response) {\n var data = response.data;\n $scope.sub_projects = subProjectFactory.repackageDTOArray(data);\n $scope.totalItems = $scope.sub_projects.length;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $rootScope.reloadTable();\n $scope.checkAll = function () {\n if (!$scope.selectedAll) {\n $scope.unCheckAll();\n return;\n }\n var filtered = getVisibleItems($scope.sub_projects);\n angular.forEach(filtered, function (p) {\n p.selected = true;\n });\n $scope.updateSelection();\n };\n $scope.unCheckAll = function () {\n angular.forEach($scope.sub_projects, function (p) {\n p.selected = $scope.selectedAll;\n if (p.selected) {\n selected.push(p);\n }\n });\n $scope.updateSelection();\n };\n $scope.updateSelection = function () {\n var filtered = getVisibleItems($scope.sub_projects);\n $scope.selectedAny = false;\n selected = [];\n angular.forEach(filtered, function (p) {\n if (!$scope.selectedAny && p.selected) {\n $scope.selectedAny = true;\n }\n if (p.selected) {\n selected.push(p);\n }\n });\n if (!$scope.selectedAny) {\n $scope.selectedAll = false;\n }\n updateIsReportGenerationEnabled();\n };\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.searchString = $scope.pendingSearchString;\n $scope.updateFullTableRange('filter', $scope.sub_projects, $scope.searchString);\n }\n };\n $scope.updateFullTableRange = function (filter, array, param) {\n $scope.updateSelection();\n var filtered = getVisibleItems($scope.sub_projects);\n $scope.totalItems = filtered.length;\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.currentPage - 1) * $scope.itemRange;\n };\n function getVisibleItems(array) {\n var filtered = array;\n if (!$scope.showInactive) {\n filtered = $filter('inactive')(filtered, $scope.showInactive);\n }\n if ($scope.searchString) {\n filtered = $filter('filter')(filtered, $scope.searchString);\n }\n return filtered;\n }\n $scope.$on('subProjectsRepeatFinished', function (subProjectsRepeatFinishedEvent) {\n $scope.updateFullTableRange('inactive', $scope.sub_projects, $scope.showInactive);\n });\n $scope.$on('updatedUserData', function (event) {\n $rootScope.reloadTable();\n });\n $scope.generateStatisticsReport = function () {\n var selectedIDs = selected.map(function (x) {\n return x.sub_project_id;\n });\n statisticsReportFactory.getDeliveryReport(selectedIDs, $scope.fromDate, $scope.toDate).then(function (response) {\n var responseDTO = statisticsReportFactory.repackageDTO(response.data);\n $scope.reportRecordCount = responseDTO.recordCount;\n $scope.reportTotalRecordCount = responseDTO.totalRecordCount;\n $scope.blob = new Blob([responseDTO.excelArrayBuffer], {\n type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n });\n openDownloadDialog();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $scope.initDateTimeEvents = function () {\n //Init date time pickers\n var fromDatePicker = $('#fromdate-datetimepicker');\n var toDatePicker = $('#todate-datetimepicker');\n fromDatePicker.datetimepicker({\n format: 'YYYY-MM-DD',\n locale: 'sv'\n });\n fromDatePicker.data().DateTimePicker.stepping(15);\n toDatePicker.datetimepicker({\n format: 'YYYY-MM-DD',\n locale: 'sv',\n useCurrent: false\n });\n toDatePicker.data().DateTimePicker.stepping(15);\n fromDatePicker.on('dp.change', function (ev) {\n var newValue = $('#from_date_input_field').val();\n $scope.fromDate = newValue === \"\" ? null : newValue;\n toDatePicker.data(\"DateTimePicker\").minDate(ev.date);\n $scope.$apply(updateIsReportGenerationEnabled);\n });\n toDatePicker.on('dp.change', function (ev) {\n var newValue = $('#to_date_input_field').val();\n $scope.toDate = newValue === \"\" ? null : newValue;\n fromDatePicker.data(\"DateTimePicker\").maxDate(ev.date);\n $scope.$apply(updateIsReportGenerationEnabled);\n });\n fromDatePicker.on('dp.error', function (ev) {\n var newValue = $('#from_date_input_field').val();\n $scope.fromDate = newValue === \"\" ? null : newValue;\n $scope.$apply(updateIsReportGenerationEnabled);\n });\n toDatePicker.on('dp.error', function (ev) {\n var newValue = $('#to_date_input_field').val();\n $scope.toDate = newValue === \"\" ? null : newValue;\n $scope.$apply(updateIsReportGenerationEnabled);\n });\n };\n function updateIsReportGenerationEnabled() {\n $scope.isReportGenerationEnabled = $scope.selectedAny && ($inputValidationService.isValidDate($scope.fromDate) || $scope.fromDate === null) && ($inputValidationService.isValidDate($scope.toDate) || $scope.toDate === null);\n }\n ;\n function openDownloadDialog() {\n $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/statistics/shared/statistics_download_modal.html',\n controller: 'statisticsDownloadModalController',\n size: 'lg',\n scope: $scope,\n windowClass: 'sp-modal-window'\n });\n }\n ;\n}]);\n'use strict';\n\ncontrollers.controller('PlanningStatisticsController', ['$uibModal', '$scope', '$rootScope', 'statisticsReportFactory', 'errorService', '$localStorage', 'inputValidationService', function ($uibModal, $scope, $rootScope, statisticsReportFactory, errorService, $localStorage, $inputValidationService) {\n $scope.isReportGenerationEnabled = false;\n $scope.blob = null;\n $scope.reportFileName = \"planning_statistics.xlsx\";\n $scope.reportRecordCount = 0;\n $scope.reportTotalRecordCount = 0;\n $scope.fromDate = null;\n $scope.toDate = null;\n $scope.generateStatisticsReport = function () {\n statisticsReportFactory.getPlanningReport($localStorage.user.session_main_project.main_project_id, $scope.fromDate, $scope.toDate).then(function (response) {\n var responseDTO = statisticsReportFactory.repackageDTO(response.data);\n $scope.reportRecordCount = responseDTO.recordCount;\n $scope.reportTotalRecordCount = responseDTO.totalRecordCount;\n $scope.blob = new Blob([responseDTO.excelArrayBuffer], {\n type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n });\n openDownloadDialog();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $scope.initDateTimeEvents = function () {\n //Init date time pickers\n var fromDatePicker = $('#fromdate-planning-datetimepicker');\n var toDatePicker = $('#todate-planning-datetimepicker');\n fromDatePicker.datetimepicker({\n format: 'YYYY-MM-DD',\n locale: 'sv'\n });\n fromDatePicker.data().DateTimePicker.stepping(15);\n toDatePicker.datetimepicker({\n format: 'YYYY-MM-DD',\n locale: 'sv',\n useCurrent: false\n });\n toDatePicker.data().DateTimePicker.stepping(15);\n fromDatePicker.on('dp.change', function (ev) {\n var newValue = $('#from_date_input_field').val();\n $scope.fromDate = newValue === \"\" ? null : newValue;\n toDatePicker.data(\"DateTimePicker\").minDate(ev.date);\n $scope.$apply(updateIsReportGenerationEnabled);\n });\n toDatePicker.on('dp.change', function (ev) {\n var newValue = $('#to_date_input_field').val();\n $scope.toDate = newValue === \"\" ? null : newValue;\n fromDatePicker.data(\"DateTimePicker\").maxDate(ev.date);\n $scope.$apply(updateIsReportGenerationEnabled);\n });\n fromDatePicker.on('dp.error', function (ev) {\n var newValue = $('#from_date_input_field').val();\n $scope.fromDate = newValue === \"\" ? null : newValue;\n $scope.$apply(updateIsReportGenerationEnabled);\n });\n toDatePicker.on('dp.error', function (ev) {\n var newValue = $('#to_date_input_field').val();\n $scope.toDate = newValue === \"\" ? null : newValue;\n $scope.$apply(updateIsReportGenerationEnabled);\n });\n };\n function updateIsReportGenerationEnabled() {\n $scope.isReportGenerationEnabled = $localStorage.user.session_main_project.main_project_id && ($inputValidationService.isValidDate($scope.fromDate) || $scope.fromDate === null) && ($inputValidationService.isValidDate($scope.toDate) || $scope.toDate === null);\n }\n ;\n function openDownloadDialog() {\n $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/statistics/shared/statistics_download_modal.html',\n controller: 'statisticsDownloadModalController',\n size: 'lg',\n scope: $scope,\n windowClass: 'sp-modal-window'\n });\n }\n ;\n}]);\n'use strict';\n\napp.controller('statisticsDownloadModalController', ['$scope', '$uibModalInstance', function ($scope, $uibModalInstance) {\n $scope.save = function () {\n promptDownload($scope.blob);\n $uibModalInstance.close();\n };\n $scope.close = function () {\n $scope.blob = null;\n $scope.reportRecordCount = 0;\n $scope.reportTotalRecordCount = 0;\n $uibModalInstance.close();\n };\n function promptDownload(blob) {\n // IE11: use the msSaveOrOpenBlob API\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\n window.navigator.msSaveOrOpenBlob(blob, $scope.reportFileName);\n }\n // Firefox and Chrome: simulate download link click\n else {\n var url = URL.createObjectURL(blob);\n var a = document.createElement('a');\n document.body.appendChild(a);\n a.style = 'display: none';\n a.href = url;\n a.download = $scope.reportFileName;\n a.click();\n URL.revokeObjectURL(url);\n document.body.removeChild(a);\n }\n }\n}]);\n'use strict';\n\ncontrollers.controller('DivisionController', ['$uibModal', '$scope', '$rootScope', '$filter', 'divisionFactory', 'errorService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, divisionFactory, errorService) {\n $scope.innerRange = 5;\n $scope.currentPage = 1;\n $scope.itemRangeBottom = 0;\n $scope.itemRangeTop = 14;\n $scope.itemRange = 15;\n $scope.selectedAny = false;\n $scope.selectedAll = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.hasMixedSelection = false;\n $scope.showInactive = false;\n $scope.searchString = '';\n $scope.keyCode = '';\n var selected = [];\n $rootScope.reloadTable = function () {\n $scope.data = [];\n divisionFactory.getDivisions().then(function (response) {\n $scope.data = response.data;\n $scope.totalItems = $scope.data.length;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $rootScope.reloadTable();\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.searchString = $scope.pendingSearchString;\n $scope.updateFullTableRange('filter', $scope.data, $scope.searchString);\n }\n };\n $scope.updateFullTableRange = function (filter, array, param) {\n var filtered = $filter(filter)(array, param);\n $scope.totalItems = filtered.length;\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.currentPage - 1) * $scope.itemRange;\n };\n\n // --- MODAL - VIEW VEHICLE ---\n var animationsEnabled = false;\n $scope.viewDivision = function (_id) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/system/division/division_form.html',\n controller: 'DivisionInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view';\n },\n id: function id() {\n return _id;\n }\n }\n });\n };\n $scope.$on('dataRepeatFinished', function (dataRepeatFinishedEvent) {\n $scope.updateFullTableRange('inactive', $scope.data, $scope.showInactive);\n });\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('DivisionInstanceController', ['$uibModalInstance', 'form_type', 'id', '$scope', '$rootScope', 'divisionFactory', function ($uibModalInstance, form_type, id, $scope, $rootScope, divisionFactory) {\n $scope.validated = false;\n $scope.form_type = form_type;\n if (form_type === 'view') {\n divisionFactory.getDivision(id).then(function (response) {\n $scope.data = response.data;\n }, function (error) {\n errorService.handleError(error);\n });\n }\n $scope.update = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n divisionFactory.updateDivision($scope.data.DivisionId, $scope.data).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close();\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n if (input === '') {\n return false;\n } else if (typeof input === 'undefined') {\n return false;\n } else if (input === null) {\n return false;\n } else return true;\n };\n $scope.validateForm = function () {\n $scope.formValid = $scope.data.MainProjectShortNamePrefix !== '' && typeof $scope.data.MainProjectShortNamePrefix !== 'undefined' && $scope.data.ProjectShortNamePrefix !== '' && typeof $scope.data.ProjectShortNamePrefix !== 'undefined' && $scope.data.SubProjectShortNamePrefix !== '' && typeof $scope.data.SubProjectShortNamePrefix !== 'undefined' && $scope.data.WorkOrderShortNamePrefix !== '' && typeof $scope.data.WorkOrderShortNamePrefix !== 'undefined' && $scope.data.DirectDeliveryOrderNumberPrefix !== '' && typeof $scope.data.DirectDeliveryOrderNumberPrefix !== 'undefined' && $scope.data.StoringOrderNumberPrefix !== '' && typeof $scope.data.StoringOrderNumberPrefix !== 'undefined' && $scope.data.TransshipmentOrderNumberPrefix !== '' && typeof $scope.data.TransshipmentOrderNumberPrefix !== 'undefined' && $scope.data.MaterialOrderNumberPrefix !== '' && typeof $scope.data.MaterialOrderNumberPrefix !== 'undefined' && $scope.data.RecurringDirectDeliveryOrderNumberPrefix !== '' && typeof $scope.data.RecurringDirectDeliveryOrderNumberPrefix !== 'undefined' && $scope.data.PackageCollectionOrderNumberPrefix !== '' && typeof $scope.data.PackageCollectionOrderNumberPrefix !== 'undefined' && $scope.data.ResourceBookingOrderNumberPrefix !== '' && typeof $scope.data.ResourceBookingOrderNumberPrefix !== 'undefined';\n return $scope.formValid;\n };\n}]);\n'use strict';\n\ncontrollers.controller('NotificationTemplateController', ['$uibModal', '$scope', '$rootScope', '$filter', 'notificationTemplateFactory', 'errorService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, notificationTemplateFactory, errorService, keyCodes) {\n $scope.innerRange = 5;\n $scope.currentPage = 1;\n $scope.itemRangeBottom = 0;\n $scope.itemRangeTop = 14;\n $scope.itemRange = 15;\n $scope.selectedAny = false;\n $scope.selectedAll = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.hasMixedSelection = false;\n $scope.showInactive = false;\n $scope.searchString = '';\n $scope.keyCode = '';\n $scope.lastSortCol = 'Name';\n $scope.sortCol = 'Name';\n $scope.sortReverse = false;\n $scope.sortReverseFn = function () {\n if ($scope.lastSortCol === $scope.sortCol && !$scope.sortReverse) {\n $scope.sortReverse = true;\n } else {\n $scope.lastSortCol = $scope.sortCol;\n $scope.sortReverse = false;\n }\n };\n $rootScope.reloadTable = function () {\n $scope.data = [];\n notificationTemplateFactory.getNotificationTemplates().then(function (response) {\n $scope.data = response.data;\n $scope.totalItems = $scope.data.length;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $rootScope.reloadTable();\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.searchString = $scope.pendingSearchString;\n $scope.updateFullTableRange('filter', $scope.data, $scope.searchString);\n }\n };\n $scope.updateFullTableRange = function (filter, array, param) {\n var filtered = $filter(filter)(array, param);\n $scope.totalItems = filtered.length;\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.currentPage - 1) * $scope.itemRange;\n };\n\n // --- MODAL - VIEW VEHICLE ---\n var animationsEnabled = false;\n $scope.viewNotificationTemplate = function (_id) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/system/notification_template/notification_template_form.html',\n controller: 'NotificationTemplateInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view';\n },\n id: function id() {\n return _id;\n }\n }\n });\n };\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('NotificationTemplateInstanceController', ['$uibModalInstance', 'form_type', 'id', '$scope', '$rootScope', 'notificationTemplateFactory', 'errorService', function ($uibModalInstance, form_type, id, $scope, $rootScope, notificationTemplateFactory, errorService) {\n $scope.validated = false;\n $scope.form_type = form_type;\n if (form_type === 'view') {\n notificationTemplateFactory.getNotificationTemplate(id).then(function (response) {\n $scope.data = response.data;\n }, function (error) {\n errorService.handleError(error);\n });\n }\n $scope.update = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n notificationTemplateFactory.updateNotificationTemplate($scope.data.NotificationType, $scope.data).then(function () {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close();\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n if (input === '') {\n return false;\n } else if (typeof input === 'undefined') {\n return false;\n } else if (input === null) {\n return false;\n } else return true;\n };\n $scope.validateForm = function () {\n $scope.formValid = true;\n return $scope.formValid;\n };\n}]);\n'use strict';\n\ncontrollers.controller('PrinterController', ['$uibModal', '$scope', '$rootScope', '$filter', 'printerFactory', 'errorService', 'roleService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, printerFactory, errorService, roleService, keyCodes) {\n $scope.isAdmin = roleService.isAdmin();\n $scope.innerRange = 5;\n $scope.currentPage = 1;\n $scope.itemRangeBottom = 0;\n $scope.itemRangeTop = 14;\n $scope.itemRange = 15;\n $scope.selectedAny = false;\n $scope.selectedAll = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.hasMixedSelection = false;\n $scope.showInactive = false;\n $scope.searchString = '';\n $scope.keyCode = '';\n $scope.lastSortCol = 'Location';\n $scope.sortCol = 'Location';\n $scope.sortReverse = false;\n $scope.sortReverseFn = function () {\n if ($scope.lastSortCol === $scope.sortCol && !$scope.sortReverse) {\n $scope.sortReverse = true;\n } else {\n $scope.lastSortCol = $scope.sortCol;\n $scope.sortReverse = false;\n }\n };\n var selected = [];\n $rootScope.reloadTable = function () {\n $scope.data = [];\n printerFactory.getAllPrinters().then(function (response) {\n $scope.data = response.data;\n $scope.totalItems = $scope.data.length;\n }, errorService.handleError);\n };\n $rootScope.reloadTable();\n $scope.checkAll = function () {\n if (!$scope.selectedAll) {\n $scope.unCheckAll();\n return;\n }\n var filtered = getVisibleItems($scope.data);\n angular.forEach(filtered, function (p) {\n p.selected = true;\n });\n $scope.updateSelection();\n };\n $scope.unCheckAll = function () {\n angular.forEach($scope.data, function (p) {\n p.selected = $scope.selectedAll;\n if (p.selected) {\n selected.push(p);\n }\n });\n $scope.updateSelection();\n };\n $scope.updateSelection = function () {\n var oneActiveSelected = false;\n var oneInactiveSelected = false;\n var filtered = getVisibleItems($scope.data);\n $scope.selectedAny = false;\n selected = [];\n angular.forEach(filtered, function (p) {\n if (!$scope.selectedAny && p.selected) {\n $scope.selectedAny = true;\n }\n if (p.selected) {\n selected.push(p);\n }\n if (!oneActiveSelected && p.IsActive && p.selected) {\n oneActiveSelected = true;\n }\n if (!oneInactiveSelected && !p.IsActive && p.selected) {\n oneInactiveSelected = true;\n }\n });\n if (!$scope.selectedAny) {\n $scope.selectedAll = false;\n }\n\n // Mixed selection\n if (oneActiveSelected && oneInactiveSelected) {\n $scope.hasMixedSelection = true;\n $scope.hasActiveSelection = true;\n $scope.hasInactiveSelection = true;\n } else {\n $scope.hasMixedSelection = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n }\n\n //Active selction\n if (oneActiveSelected && !oneInactiveSelected) {\n $scope.hasActiveSelection = true;\n } else $scope.hasActiveSelection = false;\n\n //Inactive selction\n if (!oneActiveSelected && oneInactiveSelected) {\n $scope.hasInactiveSelection = true;\n } else $scope.hasInactiveSelection = false;\n };\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.searchString = $scope.pendingSearchString;\n $scope.updateFullTableRange();\n }\n };\n $scope.updateFullTableRange = function () {\n $scope.updateSelection();\n var filtered = getVisibleItems($scope.data);\n $scope.totalItems = filtered.length;\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.currentPage - 1) * $scope.itemRange;\n };\n function getVisibleItems(array) {\n var filtered = array;\n if (!$scope.showInactive) {\n filtered = $filter('inactive')(filtered, $scope.showInactive);\n }\n if ($scope.searchString) {\n filtered = $filter('filter')(filtered, $scope.searchString);\n }\n return filtered;\n }\n\n // --- MODAL - CREATE ---\n var animationsEnabled = false;\n $scope.createPrinter = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/system/printer/printer_form.html',\n controller: 'PrinterInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create';\n },\n id: function id() {\n return -1;\n }\n }\n });\n };\n $scope.activatePrinters = function (isActive) {\n selected.forEach(function (data) {\n if (isActive) {\n printerFactory.activatePrinter(data.PrinterId).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n printerFactory.deactivatePrinter(data.PrinterId).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n });\n };\n\n // --- MODAL - VIEW VEHICLE ---\n $scope.viewPrinter = function (_id) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/system/printer/printer_form.html',\n controller: 'PrinterInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view';\n },\n id: function id() {\n return _id;\n }\n }\n });\n };\n $scope.$on('dataRepeatFinished', function (vehiclesRepeatFinishedEvent) {\n $scope.updateFullTableRange();\n });\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('PrinterInstanceController', ['$uibModalInstance', 'form_type', 'id', '$scope', '$rootScope', 'printerFactory', 'mainProjectFactory', 'InputLengthLimits', function ($uibModalInstance, form_type, id, $scope, $rootScope, printerFactory, mainProjectFactory, InputLengthLimits) {\n $scope.InputLengthLimits = InputLengthLimits;\n $scope.validated = false;\n $scope.form_type = form_type;\n if (form_type === 'view') {\n printerFactory.getPrinter(id).then(function (response) {\n $scope.data = response.data;\n }, function (error) {\n errorService.handleError(error);\n });\n }\n\n // Populate projects list\n $scope.mainProjects = [];\n mainProjectFactory.getMainProjects().then(function (response) {\n $scope.mainProjects = response.data;\n }, function (error) {\n errorService.handleError(error);\n });\n\n // Finalizing or exiting form\n $scope.create = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n $scope.data.IsActive = true;\n printerFactory.createPrinter($scope.data).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(); // Pass in returned item here.\n };\n\n $scope.activation = function (isActive) {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n if (isActive) {\n printerFactory.activatePrinter($scope.data.PrinterId).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n ;\n });\n } else {\n printerFactory.deactivatePrinter($scope.data.PrinterId).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n var results = '';\n $uibModalInstance.close(results); // Pass in returned item here.\n };\n\n $scope.update = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n printerFactory.updatePrinter($scope.data.PrinterId, $scope.data).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close();\n };\n $scope.delete = function () {\n printerFactory.deletePrinter($scope.data.PrinterId).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close();\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n if (input === '') {\n return false;\n } else if (typeof input === 'undefined') {\n return false;\n } else if (input === null) {\n return false;\n } else return true;\n };\n $scope.validateForm = function () {\n $scope.formValid = $scope.data.Name !== '' && typeof $scope.data.Name !== 'undefined' && $scope.data.Location !== '' && typeof $scope.data.Location !== 'undefined' && $scope.data.Partition !== '' && typeof $scope.data.Partition !== 'undefined' && $scope.data.Company !== '' && typeof $scope.data.Company !== 'undefined' && $scope.data.StreetAddress !== '' && typeof $scope.data.StreetAddress !== 'undefined' && $scope.data.ZipCode !== '' && typeof $scope.data.ZipCode !== 'undefined' && $scope.data.City !== '' && typeof $scope.data.City !== 'undefined' && $scope.data.Phone !== '' && typeof $scope.data.Phone !== 'undefined' && $scope.data.Email !== '' && typeof $scope.data.Email !== 'undefined';\n return $scope.formValid;\n };\n}]);\n'use strict';\n\ncontrollers.controller('RouteController', ['$uibModal', '$scope', '$rootScope', '$filter', 'routeFactory', 'errorService', 'roleService', '$localStorage', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, routeFactory, errorService, roleService, $localStorage, keyCodes) {\n $scope.canEdit = roleService.isAdmin() || roleService.isServicenter() || roleService.isProjectOwner() || roleService.isWarehousePlanner();\n $scope.routes = [];\n $rootScope.reloadTable = function () {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) return;\n routeFactory.getRouteTemplatesByMainProjectId(true, sessionMainProject.main_project_id).then(function (response) {\n var routeDtos = response.data;\n $scope.routes = routeFactory.repackageDTOArray(routeDtos);\n $scope.filterInactiveItems();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n\n // Table bindings\n $scope.tableItems = $scope.vehicleTypes;\n $scope.selectedItems = [];\n $scope.tableHeaderItems = [{\n propertyName: 'route_name',\n translateName: 'ROUTE'\n }, {\n propertyName: 'display_time',\n translateName: 'DEPARTURE_TIME'\n }, {\n propertyName: 'is_active',\n translateName: 'ACTIVE'\n }];\n\n // Handle active/inactive\n $scope.showInactive = {\n value: false\n }; // Wrap in object to bind ng-model to correct scope\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.filterInactiveItems = function () {\n $scope.tableItems = $filter('inactive')($scope.routes, $scope.showInactive.value);\n };\n $scope.activateSelectedItems = function (setToActive) {\n $scope.selectedItems.forEach(function (data) {\n if (setToActive) {\n routeFactory.activateRoute(data.route_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n routeFactory.deactivateRoute(data.route_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n });\n };\n $rootScope.reloadTable(); // Initialize table\n\n $scope.$watchCollection('selectedItems', function () {\n if ($scope.selectedItems.length === 0) {\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n } else {\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n angular.forEach($scope.selectedItems, function (item) {\n if (item.is_active) {\n $scope.hasActiveSelection = true;\n } else {\n $scope.hasInactiveSelection = true;\n }\n });\n }\n });\n\n // --- MODAL - CREATE ---\n var animationsEnabled = false;\n $scope.createRoute = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/transports/route/route_form.html',\n controller: 'RouteInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create';\n },\n route: function route() {\n return {};\n }\n }\n });\n };\n\n // --- MODAL - VIEW VEHICLE ---\n $scope.viewRoute = function (_route) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/transports/route/route_form.html',\n controller: 'RouteInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view';\n },\n route: function route() {\n return _route;\n }\n }\n });\n };\n\n // Events\n $scope.$on('updatedUserData', function (event) {\n $rootScope.reloadTable();\n });\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('RouteInstanceController', ['$uibModalInstance', 'form_type', 'route', '$scope', '$rootScope', 'routeFactory', 'mainProjectFactory', 'inputValidationService', 'vehicleFactory', '$localStorage', 'errorService', function ($uibModalInstance, form_type, route, $scope, $rootScope, routeFactory, mainProjectFactory, inputValidationService, vehicleFactory, $localStorage, errorService) {\n $scope.validated = false;\n $scope.form_type = form_type;\n $scope.route = route; // Loads route\n\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) $uibModalInstance.dismiss('cancel');\n if (form_type !== 'view_route') {\n $scope.route.main_project_id = sessionMainProject.main_project_id;\n $scope.route.main_project_name = sessionMainProject.main_project_name;\n }\n\n // Load vehicles\n vehicleFactory.getVehicles(false).then(function (response) {\n var data = response.data;\n $scope.vehicles = vehicleFactory.repackageDTOArray(data);\n }, function (error) {\n errorService.handleError(error);\n });\n\n // Finalizing or exiting form\n $scope.create = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = routeFactory.createDTO($scope.route, true);\n routeFactory.createRoute(DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(); // Pass in returned item here.\n };\n\n $scope.activation = function (isActive) {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n if (isActive) {\n routeFactory.activateRoute($scope.route.route_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n routeFactory.deactivateRoute($scope.route.route_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n var results = '';\n $uibModalInstance.close(results); // Pass in returned item here.\n };\n\n $scope.update = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = routeFactory.createDTO($scope.route, $scope.route.is_template);\n routeFactory.updateRoute($scope.route.route_id, DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close();\n };\n $scope.delete = function () {\n routeFactory.deleteRoute($scope.route.route_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close();\n };\n $scope.updateTimeSelection = function (switchTo) {\n switch (switchTo) {\n case 'afternoon':\n $scope.route.is_forenoon = false;\n $scope.route.time = \"\";\n break;\n case 'forenoon':\n $scope.route.is_afternoon = false;\n $scope.route.time = '';\n break;\n case 'time':\n $scope.route.is_afternoon = false;\n $scope.route.is_forenoon = false;\n break;\n default:\n break;\n }\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n $scope.validateForm = function () {\n $scope.formValid = inputValidationService.isValidInput($scope.route.main_project_name) && inputValidationService.isValidInput($scope.route.route_name) && (inputValidationService.isValidTime($scope.route.time) || $scope.route.is_afternoon || $scope.route.is_forenoon);\n return $scope.formValid;\n };\n $scope.clearVehicle = function () {\n delete $scope.route.vehicle_id;\n delete $scope.route.vehicle_name;\n };\n $scope.initDateTimeEvents = function () {\n // Init date time picker\n $('#route-datetimepicker1').datetimepicker({\n locale: 'sv',\n format: 'LT'\n });\n $('#route-datetimepicker1').data().DateTimePicker.stepping(15);\n\n // Makes changes to the scope whenever dp.change triggers\n $('#route-datetimepicker1').on('dp.change', function (ev) {\n $scope.route.time = $('#time').val();\n $scope.updateTimeSelection('time');\n if (!$scope.$$phase) {\n $scope.$apply(); //$digest or $apply\n }\n });\n };\n}]);\n'use strict';\n\ncontrollers.controller('ShippingController', ['$uibModal', '$scope', '$rootScope', '$filter', 'shippingFactory', 'errorService', 'roleService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, shippingFactory, errorService, roleService, keyCodes) {\n $scope.isAdmin = roleService.isAdmin();\n $scope.innerRange = 5;\n $scope.currentPage = 1;\n $scope.itemRangeBottom = 0;\n $scope.itemRangeTop = 14;\n $scope.itemRange = 15;\n $scope.selectedAny = false;\n $scope.selectedAll = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.hasMixedSelection = false;\n $scope.showInactive = false;\n $scope.searchString = '';\n $scope.keyCode = '';\n $scope.lastSortCol = 'shipping_name';\n $scope.sortCol = 'shipping_name';\n $scope.sortReverse = false;\n $scope.sortReverseFn = function () {\n if ($scope.lastSortCol === $scope.sortCol && !$scope.sortReverse) {\n $scope.sortReverse = true;\n } else {\n $scope.lastSortCol = $scope.sortCol;\n $scope.sortReverse = false;\n }\n };\n var selected = [];\n $rootScope.reloadTable = function () {\n $scope.selectedAll = false;\n $scope.selectedAny = false;\n shippingFactory.getShippings(true).then(function (response) {\n var data = response.data;\n $scope.shippings = shippingFactory.repackageDTOArray(data);\n $scope.totalItems = $scope.shippings.length;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n $rootScope.reloadTable();\n $scope.checkAll = function () {\n if (!$scope.selectedAll) {\n $scope.unCheckAll();\n return;\n }\n var filtered = getVisibleItems($scope.shippings);\n angular.forEach(filtered, function (p) {\n p.selected = true;\n });\n $scope.updateSelection();\n };\n $scope.unCheckAll = function () {\n angular.forEach($scope.shippings, function (p) {\n p.selected = false;\n });\n $scope.updateSelection();\n };\n $scope.updateSelection = function () {\n var oneActiveSelected = false;\n var oneInactiveSelected = false;\n var filtered = getVisibleItems($scope.shippings);\n $scope.selectedAny = false;\n selected = [];\n angular.forEach(filtered, function (p) {\n if (!$scope.selectedAny && p.selected) {\n $scope.selectedAny = true;\n }\n if (p.selected) {\n selected.push(p);\n }\n if (!oneActiveSelected && p.is_active && p.selected) {\n oneActiveSelected = true;\n }\n if (!oneInactiveSelected && !p.is_active && p.selected) {\n oneInactiveSelected = true;\n }\n });\n if (!$scope.selectedAny) {\n $scope.selectedAll = false;\n }\n\n // Mixed selection\n if (oneActiveSelected && oneInactiveSelected) {\n $scope.hasMixedSelection = true;\n $scope.hasActiveSelection = true;\n $scope.hasInactiveSelection = true;\n } else {\n $scope.hasMixedSelection = false;\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n }\n\n //Active selction\n if (oneActiveSelected && !oneInactiveSelected) {\n $scope.hasActiveSelection = true;\n } else $scope.hasActiveSelection = false;\n\n //Inactive selction\n if (!oneActiveSelected && oneInactiveSelected) {\n $scope.hasInactiveSelection = true;\n } else $scope.hasInactiveSelection = false;\n };\n $scope.searchKeyUp = function (keyCode) {\n if (keyCode === keyCodes.ENTER) {\n $scope.searchString = $scope.pendingSearchString;\n $scope.updateFullTableRange();\n }\n };\n $scope.updateFullTableRange = function () {\n $scope.updateSelection();\n var filtered = getVisibleItems($scope.shippings);\n $scope.totalItems = filtered.length;\n };\n $scope.updateTableRange = function () {\n $scope.itemRangeBottom = ($scope.currentPage - 1) * $scope.itemRange;\n };\n function getVisibleItems(array) {\n var filtered = array;\n if (!$scope.showInactive) {\n filtered = $filter('inactive')(filtered, $scope.showInactive);\n }\n if ($scope.searchString) {\n filtered = $filter('filter')(filtered, $scope.searchString);\n }\n return filtered;\n }\n\n // --- MODAL - CREATE ---\n var animationsEnabled = true;\n $scope.createShipping = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/transports/shipping/shipping_form.html',\n controller: 'ShippingInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create_shipping';\n },\n id: function id() {\n return -1;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n $scope.activateShippings = function (isActive) {\n selected.forEach(function (data) {\n if (isActive) {\n shippingFactory.activateShipping(data.shipping_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n shippingFactory.deactivateShipping(data.shipping_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n });\n };\n\n // --- MODAL - VIEW GATE ---\n $scope.viewShipping = function (_id) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/transports/shipping/shipping_form.html',\n controller: 'ShippingInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view_shipping';\n },\n id: function id() {\n return _id;\n }\n }\n });\n modalInstance.result.then(function (results) {});\n };\n $scope.$on('shippingsRepeatFinished', function (shippingsRepeatFinishedEvent) {\n $scope.updateFullTableRange();\n });\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('ShippingInstanceController', ['$uibModalInstance', 'form_type', 'id', '$scope', '$rootScope', 'shippingFactory', 'mainProjectFactory', 'inputValidationService', 'errorService', 'roleService', function ($uibModalInstance, form_type, id, $scope, $rootScope, shippingFactory, mainProjectFactory, inputValidationService, errorService, roleService) {\n $scope.shipping = {};\n $scope.validated = false;\n $scope.form_type = form_type;\n $scope.isAdmin = roleService.isAdmin();\n if (form_type === 'view_shipping') {\n shippingFactory.getShipping(id).then(function (response) {\n var data = response.data;\n $scope.shipping = shippingFactory.repackageDTO(data);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n\n // Populate projects list\n $scope.main_projects = [];\n mainProjectFactory.getMainProjects().then(function (response) {\n var data = response.data;\n data.forEach(function (main_project, index) {\n $scope.main_projects.push({\n main_project_name: main_project.Name,\n main_project_id: main_project.MainProjectId\n });\n });\n }, function (error) {\n errorService.handleError(error);\n });\n\n // Finalizing or exiting form\n $scope.create = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = shippingFactory.createDTO($scope.shipping);\n shippingFactory.createShipping(DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(''); // Pass in returned item here.\n };\n\n $scope.activation = function (isActive) {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n if (isActive) {\n shippingFactory.activateShipping($scope.shipping.shipping_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n shippingFactory.deactivateShipping($scope.shipping.shipping_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n $uibModalInstance.close(''); // Pass in returned item here.\n };\n\n $scope.update = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = shippingFactory.createDTO($scope.shipping);\n shippingFactory.updateShipping(DTO.ShippingId, DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(''); // Pass in returned item here.\n };\n\n $scope.delete = function () {\n shippingFactory.deleteShipping($scope.shipping.shipping_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(''); // Pass in returned item here.\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n $scope.validateForm = function () {\n $scope.formValid = inputValidationService.isValidInput($scope.shipping.main_project_name) && inputValidationService.isValidInput($scope.shipping.shipping_name) && inputValidationService.isValidInput($scope.shipping.unifaun_reference);\n return $scope.formValid;\n };\n}]);\n'use strict';\n\napp.controller('VehicleFormController', ['$uibModalInstance', 'form_type', 'id', '$scope', '$rootScope', 'vehicleFactory', 'vehicleTypeFactory', 'inputValidationService', '$localStorage', 'errorService', function ($uibModalInstance, form_type, id, $scope, $rootScope, vehicleFactory, vehicleTypeFactory, inputValidationService, $localStorage, errorService) {\n $scope.validated = false;\n $scope.form_type = form_type;\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) $uibModalInstance.dismiss('cancel');\n if (form_type === 'view_vehicle') {\n vehicleFactory.getVehicle(id).then(function (response) {\n var data = response.data;\n $scope.vehicle_id = id;\n $scope.vehicle_name = data.Name;\n $scope.vehicle_type_id = data.VehicleTypeId;\n $scope.vehicle_type_code = data.VehicleTypeCode;\n $scope.main_project_id = data.MainProjectId;\n $scope.main_project_name = data.MainProjectName;\n $scope.is_active = data.IsActive;\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n $scope.main_project_id = sessionMainProject.main_project_id;\n $scope.main_project_name = sessionMainProject.main_project_name;\n }\n\n // Populate vehicle types list\n vehicleTypeFactory.getVehicleTypes(sessionMainProject.main_project_id, false).then(function (response) {\n var data = response.data;\n $scope.vehicle_types = vehicleTypeFactory.repackageDTOArray(data);\n }, function (error) {\n errorService.handleError(error);\n });\n\n // Finalizing or exiting form\n $scope.create = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = {\n \"Name\": $scope.vehicle_name,\n \"VehicleTypeId\": $scope.vehicle_type_id,\n \"MainProjectId\": $scope.main_project_id,\n \"IsActive\": true\n };\n vehicleFactory.createVehicle(DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(); // Pass in returned item here.\n };\n\n $scope.activation = function (isActive) {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n if (isActive) {\n vehicleFactory.activateVehicle($scope.vehicle_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n vehicleFactory.deactivateVehicle($scope.vehicle_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n var results = '';\n $uibModalInstance.close(results); // Pass in returned item here.\n };\n\n $scope.update = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = {\n \"VehicleId\": $scope.vehicle_id,\n \"Name\": $scope.vehicle_name,\n \"VehicleTypeId\": $scope.vehicle_type_id,\n \"MainProjectId\": $scope.main_project_id,\n \"IsActive\": $scope.is_active\n };\n vehicleFactory.updateVehicle($scope.vehicle_id, DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close();\n };\n $scope.delete = function () {\n vehicleFactory.deleteVehicle($scope.vehicle_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close();\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n $scope.validateForm = function () {\n $scope.formValid = inputValidationService.isValidInput($scope.vehicle_name) && inputValidationService.isValidInput($scope.vehicle_type_code) && inputValidationService.isValidInput($scope.main_project_name);\n return $scope.formValid;\n };\n $scope.inputLengthLimits = {\n vehicle: 30\n };\n}]);\n'use strict';\n\ncontrollers.controller('VehicleController', ['$uibModal', '$scope', '$rootScope', '$filter', 'vehicleFactory', 'errorService', '$localStorage', 'roleService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, vehicleFactory, errorService, $localStorage, roleService, keyCodes) {\n $scope.canEdit = roleService.isAdmin() || roleService.isServicenter() || roleService.isProjectOwner() || roleService.isWarehousePlanner();\n $scope.vehicles = [];\n $rootScope.reloadTable = function () {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) return;\n vehicleFactory.getVehiclesByMainProjectId(true, sessionMainProject.main_project_id).then(function (response) {\n var data = response.data;\n $scope.vehicles = vehicleFactory.repackageDTOArray(data);\n $scope.filterInactiveItems();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n\n // Table bindings\n $scope.tableItems = $scope.vehicleTypes;\n $scope.selectedItems = [];\n $scope.tableHeaderItems = [{\n propertyName: 'vehicle_name',\n translateName: 'VEHICLE'\n }, {\n propertyName: 'vehicle_type_code',\n translateName: 'VEHICLE_TYPE'\n }, {\n propertyName: 'is_active',\n translateName: 'ACTIVE'\n }];\n\n // Handle active/inactive\n $scope.showInactive = {\n value: false\n }; // Wrap in object to bind ng-model to correct scope\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.filterInactiveItems = function () {\n $scope.tableItems = $filter('inactive')($scope.vehicles, $scope.showInactive.value);\n };\n $scope.activateSelectedItems = function (setToActive) {\n $scope.selectedItems.forEach(function (data) {\n if (setToActive) {\n vehicleFactory.activateVehicle(data.vehicle_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n vehicleFactory.deactivateVehicle(data.vehicle_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n });\n };\n $rootScope.reloadTable(); // Initialize table\n\n $scope.$watchCollection('selectedItems', function () {\n if ($scope.selectedItems.length === 0) {\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n } else {\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n angular.forEach($scope.selectedItems, function (item) {\n if (item.is_active) {\n $scope.hasActiveSelection = true;\n } else {\n $scope.hasInactiveSelection = true;\n }\n });\n }\n });\n\n // --- MODAL - CREATE ---\n var animationsEnabled = true;\n $scope.createVehicle = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/transports/vehicle/vehicle_form.html',\n controller: 'VehicleFormController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create_vehicle';\n },\n id: function id() {\n return -1;\n }\n }\n });\n };\n\n // --- MODAL - VIEW VEHICLE ---\n $scope.viewVehicle = function (vehicle) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/transports/vehicle/vehicle_form.html',\n controller: 'VehicleFormController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view_vehicle';\n },\n id: function id() {\n return vehicle.vehicle_id;\n }\n }\n });\n };\n\n // Events\n $scope.$on('updatedUserData', function (event) {\n $rootScope.reloadTable();\n });\n}]);\n'use strict';\n\ncontrollers.controller('VehicleTypeController', ['$uibModal', '$scope', '$rootScope', '$filter', 'vehicleTypeFactory', 'errorService', '$localStorage', 'roleService', 'keyCodes', function ($uibModal, $scope, $rootScope, $filter, vehicleTypeFactory, errorService, $localStorage, roleService, keyCodes) {\n $scope.canEdit = roleService.isAdmin() || roleService.isServicenter() || roleService.isProjectOwner();\n $scope.vehicleTypes = [];\n $rootScope.reloadTable = function () {\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) return;\n vehicleTypeFactory.getVehicleTypes(sessionMainProject.main_project_id, true).then(function (response) {\n var data = response.data;\n var vehicleTypes = vehicleTypeFactory.repackageDTOArray(data);\n $scope.vehicleTypes = $filter('filter')(vehicleTypes, {\n main_project_id: sessionMainProject.main_project_id\n }, true);\n $scope.filterInactiveItems();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n\n // Table bindings\n $scope.tableItems = $scope.vehicleTypes;\n $scope.selectedItems = [];\n $scope.tableHeaderItems = [{\n propertyName: 'vehicle_type_code',\n translateName: 'VEHICLE_TYPE'\n }, {\n propertyName: 'vehicle_capacity',\n translateName: 'CAPACITY'\n }, {\n propertyName: 'is_active',\n translateName: 'ACTIVE'\n }];\n\n // Handle active/inactive\n $scope.showInactive = {\n value: false\n }; // Wrap in object to bind ng-model to correct scope\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n $scope.filterInactiveItems = function () {\n $scope.tableItems = $filter('inactive')($scope.vehicleTypes, $scope.showInactive.value);\n };\n $scope.activateSelectedItems = function (setToActive) {\n $scope.selectedItems.forEach(function (data) {\n if (setToActive) {\n vehicleTypeFactory.activateVehicleType(data.vehicle_type_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n vehicleTypeFactory.deactivateVehicleType(data.vehicle_type_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n });\n };\n $rootScope.reloadTable(); // Initialize table\n\n $scope.$watchCollection('selectedItems', function () {\n if ($scope.selectedItems.length === 0) {\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n } else {\n $scope.hasActiveSelection = false;\n $scope.hasInactiveSelection = false;\n angular.forEach($scope.selectedItems, function (item) {\n if (item.is_active) {\n $scope.hasActiveSelection = true;\n } else {\n $scope.hasInactiveSelection = true;\n }\n });\n }\n });\n\n // --- MODAL - CREATE ---\n var animationsEnabled = true;\n $scope.createVehicleType = function () {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/transports/vehicle_type/vehicle_type_form.html',\n controller: 'VehicleTypeInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'create_vehicle_type';\n },\n id: function id() {\n return -1;\n }\n }\n });\n };\n\n // --- MODAL - VIEW VEHICLE ---\n $scope.viewVehicleType = function (vehicleType) {\n var modalInstance = $uibModal.open({\n animation: animationsEnabled,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/components/transports/vehicle_type/vehicle_type_form.html',\n controller: 'VehicleTypeInstanceController',\n size: 'md',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return 'view_vehicle_type';\n },\n id: function id() {\n return vehicleType.vehicle_type_id;\n }\n }\n });\n };\n\n // Events\n $scope.$on('updatedUserData', function (event) {\n $rootScope.reloadTable();\n });\n}]);\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\napp.controller('VehicleTypeInstanceController', ['$uibModalInstance', 'form_type', 'id', '$scope', '$rootScope', 'vehicleTypeFactory', 'mainProjectFactory', '$localStorage', 'inputValidationService', 'errorService', function ($uibModalInstance, form_type, id, $scope, $rootScope, vehicleTypeFactory, mainProjectFactory, $localStorage, inputValidationService, errorService) {\n $scope.validated = false;\n $scope.form_type = form_type;\n var sessionMainProject = $localStorage.user.session_main_project;\n if (!sessionMainProject) $uibModalInstance.dismiss('cancel');\n if (form_type === 'view_vehicle_type') {\n vehicleTypeFactory.getVehicleType(id).then(function (response) {\n var data = response.data;\n $scope.vehicle_type_id = data.VehicleTypeId;\n $scope.vehicle_type_code = data.Code;\n $scope.main_project_id = data.MainProjectId;\n $scope.main_project_name = data.MainProjectName;\n $scope.capacity = data.Capacity;\n $scope.is_active = data.IsActive;\n }, function (error) {\n errorService.handleError(error);\n });\n } else {\n $scope.main_project_id = sessionMainProject.main_project_id;\n $scope.main_project_name = sessionMainProject.main_project_name;\n }\n\n // Finalizing or exiting form\n $scope.create = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = {\n \"Code\": $scope.vehicle_type_code,\n \"MainProjectId\": $scope.main_project_id,\n \"Capacity\": $scope.capacity,\n \"IsActive\": true\n };\n vehicleTypeFactory.createVehicleType(DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close(); // Pass in returned item here.\n };\n\n $scope.activation = function (isActive) {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n if (isActive) {\n vehicleTypeFactory.activateVehicleType($scope.vehicle_type_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n ;\n });\n } else {\n vehicleTypeFactory.deactivateVehicleType($scope.vehicle_type_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n var results = '';\n $uibModalInstance.close(results); // Pass in returned item here.\n };\n\n $scope.update = function () {\n $scope.validated = true;\n if (!$scope.validateForm()) {\n return;\n }\n var DTO = {\n \"VehicleTypeId\": $scope.vehicle_type_id,\n \"Code\": $scope.vehicle_type_code,\n \"MainProjectId\": $scope.main_project_id,\n \"Capacity\": $scope.capacity,\n \"IsActive\": $scope.is_active\n };\n vehicleTypeFactory.updateVehicleType($scope.vehicle_type_id, DTO).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close();\n };\n $scope.delete = function () {\n vehicleTypeFactory.deleteVehicleType($scope.vehicle_type_id).then(function (response) {\n $rootScope.reloadTable();\n }, function (error) {\n errorService.handleError(error);\n });\n $uibModalInstance.close();\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n $scope.validateForm = function () {\n $scope.formValid = inputValidationService.isValidInput($scope.vehicle_type_code) && inputValidationService.isValidInput($scope.main_project_name) && inputValidationService.isValidInput($scope.capacity);\n return $scope.formValid;\n };\n}]);\nangular.module('sp.components').component('deviceMenuButton', {\n templateUrl: 'app/components/uiComponents/deviceMenuButton/device_menu_button.html',\n bindings: {\n href: '@',\n onClick: '&',\n isActive: '<',\n isMainNavigation: '<',\n icon: '@',\n title: '@',\n titleTranslateTag: '@',\n type: '@',\n iconIsSimpleLine: '<'\n },\n controller: function controller() {\n var ctrl = this;\n ctrl.$onInit = function () {\n ctrl.href = ctrl.href || '#';\n ctrl.iconColor = 'white';\n };\n ctrl.setMouseDownColor = function () {\n ctrl.iconColor = ctrl.type == 'close' ? 'red' : 'blue';\n };\n ctrl.setMouseUpColor = function () {\n ctrl.iconColor = 'white';\n };\n }\n});\nfunction FileUploadController(ALLOWED_FILE_EXTENTIONS, inputValidationService) {\n var ctrl = this;\n\n // Is called when binding values are changed\n ctrl.$onChanges = function (bindings) {\n if (bindings.isRequired) {\n onChanges();\n }\n };\n ctrl.isValid = false;\n ctrl.file = undefined;\n ctrl.files = [];\n ctrl.ALLOWED_FILE_EXTENTIONS = ALLOWED_FILE_EXTENTIONS;\n\n // Watch for our custom `fileselect` event\n // FUTURE: This should be done using a directive instead\n ctrl.initFileSelectEvent = function () {\n $(':file').on('fileselect', function (event, numFiles, label) {\n var input = $('#fileSelectedText');\n log = numFiles > 1 ? numFiles + ' filer valda' : label;\n if (input) {\n input.val(log);\n } else {\n if (log) alert(log);\n }\n onChanges();\n });\n };\n function onChanges() {\n var data = ctrl.isMultipleFilesAllowed ? ctrl.files : ctrl.file ? [ctrl.file] : [];\n var areValidFiles = inputValidationService.areValidFiles(data);\n ctrl.isValid = (data.length > 0 || !ctrl.isRequired) && areValidFiles;\n ctrl.onSelect({\n \"$files\": data,\n \"$file\": ctrl.file,\n \"$isValid\": ctrl.isValid\n });\n }\n}\nangular.module('sp.components').component('fileUpload', {\n templateUrl: 'app/components/uiComponents/fileUpload/fileUpload.html',\n controller: ['ALLOWED_FILE_EXTENTIONS', 'inputValidationService', FileUploadController],\n bindings: {\n displayText: ' 0) {\n return true;\n } else return false;\n }\n function generateCalendarCells() {\n if (!ctrl.viewDate) return;\n var firstMonday = getCalendarMondaysDate();\n for (var i = 0; i < nDays; i++) {\n ctrl.calendarCells[i] = [];\n for (var j = 0; j < nRows; j++) {\n var cellIndex = 7 * j + i;\n var date = getUpcomingDate(firstMonday, cellIndex);\n ctrl.calendarCells[i][j] = {\n date: date,\n isToday: isToday(date),\n isOutOfScope: notInCurrentMonth(date),\n hasOrders: dateHasOrders(date)\n };\n }\n }\n }\n}\n;\nangular.module('sp.components').component('miniCalendar', {\n templateUrl: 'app/components/uiComponents/miniCalendar/mini_calendar.html',\n controller: ['$filter', MiniCalendarController],\n bindings: {\n viewDate: '<',\n onDateSelected: '&',\n periodType: '@',\n calendarOrders: '<',\n formatDateOrMonth: '<'\n }\n});\nangular.module('sp.components').component('mobileChangeMainProjectComponent', {\n templateUrl: 'app/components/uiComponents/mobileChangeMainProjectComponent/mobile_change_main_project_component.html',\n bindings: {\n onClose: '&',\n mainProjects: '<',\n onSelect: '&',\n currentlySelected: '<'\n }\n});\n'use strict';\n\n/**Component used to apply megafiltering in the mobile version of Serviplan.\r\n * Currently only filters vehicle drop locations.\r\n*/\nfunction MobileFilterController(megaFilterService, $rootScope, $filter, locationFactory, $localStorage) {\n var ctrl = this;\n ctrl.vehicleDropLocations = [];\n ctrl.mainProjectId = $localStorage.user.session_main_project.main_project_id;\n ctrl.vehicleDropLocationClicked = function (vehicleDropLocation) {\n if (ctrl.currentlySelected.id === vehicleDropLocation.Id) {\n ctrl.currentlySelected.id = null;\n ctrl.currentlySelected.name = '';\n } else {\n ctrl.currentlySelected.id = vehicleDropLocation.Id;\n ctrl.currentlySelected.name = vehicleDropLocation.name;\n }\n ;\n ctrl.onSelect();\n };\n ctrl.$onInit = function () {\n locationFactory.getFilterableVehicleDropLocations(ctrl.mainProjectId, ctrl.isArchive, ctrl.isArchive).then(function (result) {\n ctrl.vehicleDropLocations = result.data;\n });\n };\n}\n;\nangular.module('sp.components').component('mobileFilter', {\n templateUrl: 'app/components/uiComponents/mobileFilter/mobile_filter.html',\n bindings: {\n onClose: '&',\n onSelect: '&',\n currentlySelected: '<',\n isArchive: '<'\n },\n controller: ['megaFilterService', '$rootScope', '$filter', 'locationFactory', '$localStorage', MobileFilterController]\n});\nfunction CreateButtonsController() {}\nangular.module('sp.components').component('createButtons', {\n templateUrl: 'app/components/uiComponents/modalForm/createButtons.html',\n controller: CreateButtonsController,\n bindings: {\n onCancel: '&',\n onCreate: '&'\n }\n});\nfunction ManageButtonsController() {\n ctrl = this;\n ctrl.showConfirmDelete = false;\n}\nangular.module('sp.components').component('manageButtons', {\n templateUrl: 'app/components/uiComponents/modalForm/manageButtons.html',\n controller: ManageButtonsController,\n bindings: {\n showDelete: '<',\n showActivate: '<',\n isActive: '\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n */\n\nfunction ModalFormWrapperController() {}\nangular.module('sp.components').component('modalFormWrapper', {\n templateUrl: 'app/components/uiComponents/modalForm/modalFormWrapper.html',\n transclude: {\n 'inputs': '?modalFormInputs',\n 'createButtons': '?modalFormCreateButtons',\n 'viewButtons': '?modalFormViewButtons',\n 'manangeButtons': '?modalFormManageButtons'\n },\n controller: ModalFormWrapperController,\n bindings: {\n id: '@',\n formType: '@',\n itemTypeTranslateTag: '@',\n itemName: '@',\n showErrorMessage: '<',\n onCancel: '&'\n }\n});\nfunction ViewButtonsController() {}\nangular.module('sp.components').component('viewButtons', {\n templateUrl: 'app/components/uiComponents/modalForm/viewButtons.html',\n controller: ViewButtonsController,\n bindings: {\n onSetFormTypeManage: '&'\n }\n});\nfunction ContactInputsController(inputValidationService, InputLengthLimits) {\n var ctrl = this;\n\n // Is called when binding values are changed\n ctrl.$onChanges = function (bindings) {\n if (isDataResolved(bindings)) {\n ctrl.handleInputChange();\n }\n };\n function isDataResolved(changes) {\n return !!changes.data && !!changes.data.currentValue;\n }\n ctrl.InputLengthLimits = InputLengthLimits;\n ctrl.isValidName = function () {\n return inputValidationService.isValidInput(ctrl.data.contact_name);\n };\n ctrl.isValidEmail = function (input) {\n return hasValidNotifitionSelection() && (inputValidationService.isValidEmail(ctrl.data.email) || !ctrl.data.email_notif);\n };\n ctrl.isValidPhone = function (input) {\n return hasValidNotifitionSelection() && (inputValidationService.isValidInput(ctrl.data.phone_nr) || !ctrl.data.sms_notif);\n };\n function hasValidNotifitionSelection() {\n return ctrl.data.email_notif || ctrl.data.sms_notif || !ctrl.areNotificationsRequired;\n }\n ctrl.handleInputChange = function () {\n ctrl.isValid = ctrl.isValidName() && ctrl.isValidPhone() && ctrl.isValidEmail();\n ctrl.onValidationChange({\n \"$isValid\": ctrl.isValid\n });\n };\n ctrl.handleContactSelected = function (selectedContact) {\n var newData = {\n \"contact_id\": ctrl.data.contact_id,\n \"contact_name\": selectedContact.name,\n \"phone_nr\": selectedContact.phone,\n \"email\": selectedContact.email,\n \"sms_notif\": ctrl.data.sms_notif,\n \"email_notif\": ctrl.data.email_notif\n };\n ctrl.onContactSelected({\n \"$data\": newData\n });\n };\n}\nangular.module('sp.components').component('contactInputs', {\n templateUrl: 'app/components/uiComponents/orderForm/contactInputs.html',\n controller: ['inputValidationService', 'InputLengthLimits', ContactInputsController],\n bindings: {\n id: '@',\n label: '@',\n data: '<',\n onValidationChange: '&',\n isDisabled: '<',\n showErrors: '<',\n areNotificationsRequired: '<',\n contactList: ' 0) {\n hasAtLeastOneTimeSlot = true;\n }\n angular.forEach(day.slots, function (slot) {\n if (!inputValidationService.isValidInput(slot.time_i) || !inputValidationService.isValidInput(slot.time_f)) {\n isValid = false;\n }\n });\n });\n ctrl.hasRecurringTimeSlot = hasAtLeastOneTimeSlot;\n return ctrl.hasRecurringTimeSlot && isValid;\n }\n $scope.$on('ngRepeatFinished', function (ngRepeatFinishedEvent, index, day) {\n // Start datetimepickers\n var slots;\n if (day === 0) slots = ctrl.data.recurring_week[6].slots;else slots = ctrl.data.recurring_week[day - 1].slots;\n var pickerSuffixIndexAndFromOrTo = '#picker_day-' + day + '-index-';\n var inputElementSuffixIndexAndFromOrTo = '#inputElement_day-' + day + '-index-';\n\n // Activate all dateTimePickers.\n for (var i = 0; i < slots.length; i++) {\n $(pickerSuffixIndexAndFromOrTo + i + '-fromto-1').datetimepicker({\n format: 'LT',\n locale: 'sv'\n });\n $(pickerSuffixIndexAndFromOrTo + i + '-fromto-1').data().DateTimePicker.stepping(15);\n $(pickerSuffixIndexAndFromOrTo + i + '-fromto-2').datetimepicker({\n format: 'LT',\n locale: 'sv'\n });\n $(pickerSuffixIndexAndFromOrTo + i + '-fromto-2').data().DateTimePicker.stepping(15);\n }\n for (i = 0; i < slots.length; i++) {\n if (!slots[i].is_setup) {\n var elementIdWithIndex = inputElementSuffixIndexAndFromOrTo + i;\n // Date time picker events\n $(pickerSuffixIndexAndFromOrTo + i + '-fromto-1').on('dp.change', function (ev) {\n var id = ev.currentTarget.id.slice(19, 20); //... extracts slot index in day\n var initial = $(elementIdWithIndex + '-fromto-1').val();\n slots[id].time_i = initial;\n var final = generalHelperService.addTimespanToTime(initial, defaultDeliveryTimeSpan);\n final = generalHelperService.limitTimespan(initial, final, minimumDeliveryTimespan, '23:45');\n $(pickerSuffixIndexAndFromOrTo + i + '-fromto-2').val(final);\n slots[id].time_f = final;\n if (!$scope.$$phase) {\n $scope.$apply(); //$digest or $apply\n }\n\n ctrl.handleInputChange();\n });\n $(pickerSuffixIndexAndFromOrTo + i + '-fromto-2').on('dp.change', function (ev) {\n var id = ev.currentTarget.id.slice(19, 20); //... extracts slot index in day\n var initial = $(elementIdWithIndex + '-fromto-1').val();\n var final = $(elementIdWithIndex + '-fromto-2').val();\n var newFinal = generalHelperService.getValidFinalDateTime(initial, final);\n if (initial) {\n newFinal = generalHelperService.limitTimespan(initial, newFinal, minimumDeliveryTimespan, '23:45');\n }\n $(elementIdWithIndex + '-fromto-2').val(newFinal);\n slots[id].time_f = newFinal;\n if (!$scope.$$phase) {\n $scope.$apply(); //$digest or $apply\n }\n\n ctrl.handleInputChange();\n });\n slots[i].is_setup = true;\n }\n }\n });\n // Recurring order end --\n\n function clearSection() {\n ctrl.data.week_frequency = '1'; // Week frequency, odd, even, all\n ctrl.data.recurring_week = [{\n day_name: 'MON',\n slots: [],\n week_day: 1,\n active: true\n }, {\n day_name: 'TUE',\n slots: [],\n week_day: 2\n }, {\n day_name: 'WED',\n slots: [],\n week_day: 3\n }, {\n day_name: 'THU',\n slots: [],\n week_day: 4\n }, {\n day_name: 'FRI',\n slots: [],\n week_day: 5\n }, {\n day_name: 'SAT',\n slots: [],\n week_day: 6\n }, {\n day_name: 'SUN',\n slots: [],\n week_day: 0\n }];\n ctrl.handleInputChange();\n }\n function isEmpty(obj) {\n return obj && Object.keys(obj).length === 0 && Object.getPrototypeOf(obj) === Object.prototype;\n }\n function isDataResolved(changes) {\n return !!changes.data && !!changes.data.currentValue;\n }\n}\nangular.module('sp.components').component('deliveryTimeSlotInputs', {\n templateUrl: 'app/components/uiComponents/orderForm/deliveryTimeSlotInputs.html',\n controller: ['inputValidationService', 'generalHelperService', 'recurringDirectDeliveryHelper', '$timeout', '$scope', DeliveryTimeSlotInputsController],\n bindings: {\n id: '@',\n data: '<',\n onValidationChange: '&',\n isDisabled: '<',\n showErrors: '<',\n isInternal: '<',\n orderType: '<',\n isRecurringAllowed: '<',\n isRecurringDisabled: '<',\n onRecurringOrderSelected: '&?'\n }\n});\nfunction ResourceBookingInputsController(inputValidationService, generalHelperService, orderFactory, errorService, $scope) {\n var ctrl = this;\n var minimumDeliveryTimespan = moment.duration(15, 'minutes');\n var maximumDeliveryTimespan = moment.duration(3, 'months');\n var defaultDeliveryTimeSpan = moment.duration(1, 'hours');\n\n // Is called when binding values are changed\n ctrl.$onChanges = function (bindings) {\n if (isDataResolved(bindings)) {\n if (ctrl.data.length < 1) {\n ctrl.addResourceBooking();\n }\n ctrl.handleInputChange();\n }\n };\n ctrl.isValidResourceLocation = function (resourceBooking) {\n return inputValidationService.isValidInput(resourceBooking.resource_location_name) && inputValidationService.isValidInput(resourceBooking.resource_location_id);\n };\n ctrl.isValidSlotTimeStart = function (resourceBooking) {\n return inputValidationService.isValidInput(resourceBooking.slot_time_start);\n };\n ctrl.isValidSlotTimeEnd = function (resourceBooking) {\n return inputValidationService.isValidInput(resourceBooking.slot_time_end);\n };\n ctrl.handleInputChange = function () {\n var isValid = false;\n var hasInvalidBooking = false;\n if (ctrl.data && ctrl.data.length > 0) {\n angular.forEach(ctrl.data, function (item) {\n if (!ctrl.isValidResourceLocation(item) || !ctrl.isValidSlotTimeStart(item) || !ctrl.isValidSlotTimeEnd(item)) {\n hasInvalidBooking = true;\n }\n });\n isValid = !hasInvalidBooking;\n } else {\n isValid = false;\n }\n ctrl.onValidationChange({\n \"$isValid\": isValid\n });\n };\n ctrl.handleResourceLocationSelected = function (selectedResourceLocation, resourceBooking) {\n resourceBooking.resource_location_id = selectedResourceLocation.LocationId;\n resourceBooking.resource_location_name = selectedResourceLocation.Name;\n ctrl.checkIsAvailable(resourceBooking);\n ctrl.handleInputChange();\n };\n ctrl.addResourceBooking = function () {\n if (!ctrl.isAddAllowed()) return;\n ctrl.data.push({\n \"resource_location_name\": \"\",\n \"slot_time_start\": undefined,\n \"slot_time_end\": undefined\n });\n ctrl.handleInputChange();\n };\n ctrl.removeResourceBooking = function () {\n if (!ctrl.isDeleteAllowed()) return;\n ctrl.data.pop();\n ctrl.handleInputChange();\n };\n ctrl.isAddAllowed = function () {\n if (!ctrl.data) return false;\n return ctrl.data.length < 5;\n };\n ctrl.isDeleteAllowed = function () {\n if (!ctrl.data) return false;\n return ctrl.data.length > 1;\n };\n ctrl.checkIsAvailable = function (resourceBooking) {\n if (!resourceBooking.slot_time_start || !resourceBooking.slot_time_end || !resourceBooking.resource_location_id) return;\n orderFactory.isResourceAvailable(resourceBooking.slot_time_start, resourceBooking.slot_time_end, resourceBooking.resource_location_id, resourceBooking.resource_booking_id).then(function (response) {\n resourceBooking.isUnavailable = !response.data;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n ctrl.initDateTimeEvents = function (index) {\n // Init date time pickers\n $('#slottime-start-datetimepicker' + index).datetimepicker({\n format: 'YYYY-MM-DD HH:mm',\n locale: 'sv'\n });\n $('#slottime-start-datetimepicker' + index).data().DateTimePicker.stepping(15);\n $('#slottime-end-datetimepicker' + index).datetimepicker({\n format: 'YYYY-MM-DD HH:mm',\n locale: 'sv'\n });\n $('#slottime-end-datetimepicker' + index).data().DateTimePicker.stepping(15);\n\n // Date time picker events\n $('#slottime-start-datetimepicker' + index).on('dp.change', function () {\n // Set standard start & end\n var start = $('#slottime-start-input' + index).val();\n if (!ctrl.isInternal) {\n start = generalHelperService.limitDateTimeToCurrent(start);\n $('#slottime-start-input' + index).val(start);\n }\n ctrl.data[index].slot_time_start = start;\n var end = generalHelperService.addTimespanToDateTime(start, defaultDeliveryTimeSpan);\n $('#slottime-end-input' + index).val(end);\n ctrl.data[index].slot_time_end = end;\n ctrl.checkIsAvailable(ctrl.data[index]);\n ctrl.handleInputChange();\n });\n $('#slottime-end-datetimepicker' + index).on('dp.change', function () {\n // Set standard end\n var start = $('#slottime-start-input' + index).val();\n var end = $('#slottime-end-input' + index).val();\n var newEnd = generalHelperService.getValidFinalDateTime(start, end);\n if (!ctrl.isInternal) {\n newEnd = generalHelperService.limitDateTimeToCurrent(newEnd);\n }\n if (ctrl.data[index].slot_time_start) {\n newFinal = generalHelperService.limitDateTimeSpan(start, newEnd, minimumDeliveryTimespan, maximumDeliveryTimespan, false);\n }\n $('#slottime-end-input' + index).val(newEnd);\n ctrl.data[index].slot_time_end = newEnd;\n ctrl.checkIsAvailable(ctrl.data[index]);\n ctrl.handleInputChange();\n });\n ctrl.data[index].is_initiated = true;\n };\n $scope.$on('ngRepeatFinished', function () {\n for (var i = 0; i < ctrl.data.length; i++) {\n if (!ctrl.data[i].is_initiated) {\n ctrl.initDateTimeEvents(i);\n }\n }\n });\n function isDataResolved(changes) {\n return !!changes.data && !!changes.data.currentValue;\n }\n}\nangular.module('sp.components').component('resourceBookingInputs', {\n templateUrl: 'app/components/uiComponents/orderForm/resourceBookingInputs.html',\n controller: ['inputValidationService', 'generalHelperService', 'orderFactory', 'errorService', '$scope', ResourceBookingInputsController],\n bindings: {\n data: '<',\n onValidationChange: '&',\n isInternal: '<',\n isDisabled: '<',\n showErrors: '<',\n resourceList: '<'\n }\n});\nfunction SectionBookingChoiceController(inputValidationService, generalHelperService, $localStorage, orderFactory, taskStatusService, errorService, $scope, roleService) {\n var ctrl = this;\n ctrl.sessionMainProject = $localStorage.user.session_main_project;\n ctrl.isCompleted = false;\n var isValidFiles = true;\n var isValidDeliveryTimeSlots = false;\n var isValidResourceBookings = true;\n ctrl.showDirectDeliveryCollisionWarning = false;\n ctrl.finalDestinationLocationNodes = [];\n ctrl.currentProjectId = -1;\n ctrl.dropLocationParentId = -1;\n ctrl.$onInit = function () {\n identifyRoles();\n setVisibiltyFlags();\n ctrl.handleInputChanged();\n };\n\n // Is called when binding values are changed\n ctrl.$onChanges = function (bindings) {\n if (bindings.data && bindings.data.currentValue) {\n if (isEmpty(bindings.data.currentValue)) {\n clearSection();\n }\n }\n if (bindings.isPreviousSectionCompleted) {\n ctrl.handleInputChanged();\n }\n if (bindings.vehicleDropLocations) {\n setCurrentProjectIdFromVehicleDropLocation();\n }\n if (bindings.finalDestinationLocations) {\n updateFinalDestination();\n }\n };\n ctrl.handleValidationChange = function (source, value) {\n switch (source) {\n case \"delivery_time_slots\":\n isValidDeliveryTimeSlots = value;\n ctrl.checkDirectDeliveryCollision();\n break;\n case \"resource_bookings\":\n isValidResourceBookings = value;\n break;\n default:\n console.log(source + \" is not a valid source\");\n break;\n }\n ctrl.handleInputChanged();\n };\n ctrl.handleIsRecurringOrderChanged = function (isRecurringOrder) {\n ctrl.onRecurringOrderSelected({\n \"$isRecurringOrder\": isRecurringOrder\n });\n };\n ctrl.handleDestinationInformationSelection = function (isOptionSpecifiedAdress) {\n if (isOptionSpecifiedAdress) {\n delete ctrl.data.vehicle_drop_location_id;\n delete ctrl.data.vehicle_drop_location_name;\n ctrl.clearFinalDestination();\n } else {\n delete ctrl.data.address;\n delete ctrl.data.city;\n delete ctrl.data.zip_code;\n }\n ctrl.handleInputChanged();\n };\n ctrl.handleVehicleDropLocationSelected = function (vehicleDropLocation) {\n ctrl.data.vehicle_drop_location_name = vehicleDropLocation.Name;\n ctrl.data.vehicle_drop_location_id = vehicleDropLocation.LocationId;\n setDropLocationDependingInfo(vehicleDropLocation);\n delete ctrl.data.gate_in_id;\n delete ctrl.data.gate_in_name;\n delete ctrl.data.gate_out_id;\n delete ctrl.data.gate_out_name;\n delete ctrl.data.extra_gate_in_id;\n delete ctrl.data.extra_gate_in_name;\n delete ctrl.data.extra_gate_out_id;\n delete ctrl.data.extra_gate_out_name;\n clearChildNodes(0);\n ctrl.checkDirectDeliveryCollision();\n ctrl.handleInputChanged();\n };\n function setDropLocationDependingInfo(vehicleDropLocation) {\n if (!vehicleDropLocation) {\n ctrl.currentProjectId = -1;\n ctrl.dropLocationParentId = -1;\n } else {\n ctrl.currentProjectId = vehicleDropLocation.ProjectId;\n ctrl.dropLocationParentId = vehicleDropLocation.ParentLocationId;\n }\n }\n function setCurrentProjectIdFromVehicleDropLocation() {\n if (!ctrl.data.vehicle_drop_location_id) return;\n angular.forEach(ctrl.vehicleDropLocations, function (location) {\n if (ctrl.data.vehicle_drop_location_id == location.LocationId) {\n setDropLocationDependingInfo(location);\n }\n });\n }\n ctrl.handleFinalDestinationSelected = function (node, location) {\n node.location_name = location.Name;\n node.location_id = location.LocationId;\n node.is_scannable = location.IsScannable;\n clearChildNodes(node.level);\n removeSelectedFinalDestination();\n node.is_destination = true;\n ctrl.data.destination_location_id = location.LocationId;\n ctrl.data.destination_location_name = location.LocationName;\n ctrl.handleInputChanged();\n };\n ctrl.handleFilesSelected = function (files, isValid) {\n if (isValid) {\n ctrl.data.file_attachments_to_add = files;\n }\n isValidFiles = isValid;\n };\n ctrl.getFilePath = function (fileName) {\n return orderFactory.createFileLink(ctrl.orderId, fileName);\n };\n ctrl.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n ctrl.isValidArrivalTime = function () {\n if (!ctrl.showArrivalTime) return true;\n return inputValidationService.isValidDateTime(ctrl.data.arrival_time);\n };\n ctrl.isValidDeliveryTimeSlots = function () {\n if (!ctrl.showDeliveryTimeSlots) return true;\n return isValidDeliveryTimeSlots;\n };\n ctrl.isValidVehicleDropLocation = function () {\n if (!ctrl.showUnloadingPlace || ctrl.data.specified_address) return true;\n return inputValidationService.isValidInput(ctrl.data.vehicle_drop_location_name) || ctrl.isResourceBooking;\n };\n ctrl.isValidFinalDestination = function () {\n if (!ctrl.showUnloadingPlace || ctrl.data.specified_address) return true;\n var destination = getFinalDestination();\n return (!ctrl.sessionMainProject.is_final_destination_required || ctrl.isResourceBooking) && destination.LocationId == null || inputValidationService.isValidInput(destination) && inputValidationService.isValidInput(destination.Name) && inputValidationService.isValidInput(destination.IsScannable) && destination.IsScannable !== false;\n };\n ctrl.isValidStaircase = function () {\n if (!ctrl.data.staircase_location_id && !ctrl.data.staircase_location_name) return true;\n selectedStaircase = null;\n angular.forEach(ctrl.finalDestinationLocations, function (location) {\n if (location.LocationId == ctrl.data.staircase_location_id) {\n selectedStaircase = location;\n }\n });\n if (!selectedStaircase) return false;\n return inputValidationService.isValidOptionalInput(ctrl.data.staircase_location_name) && selectedStaircase.Name == ctrl.data.staircase_location_name;\n };\n ctrl.isValidSpecifiedAddress = function () {\n if (!ctrl.showSpecifiedAddress || !ctrl.data.specified_address) return true;\n return inputValidationService.isValidInput(ctrl.data.address) && inputValidationService.isValidInput(ctrl.data.zip_code) && inputValidationService.isValidInput(ctrl.data.city);\n };\n ctrl.isValidNumberOfTransports = function () {\n if (!ctrl.showNumberOfTransports) return true;\n return inputValidationService.isValidInput(ctrl.data.n_transports);\n };\n ctrl.isValidGates = function () {\n if (!ctrl.isGateBooking && !ctrl.data.hasGateIntegration) return true;\n return inputValidationService.isValidInput(ctrl.data.gate_in_name) && inputValidationService.isValidInput(ctrl.data.gate_out_name);\n };\n ctrl.isValidResourceBookings = function () {\n if (!ctrl.showResourceBookings) return true;\n return isValidResourceBookings;\n };\n ctrl.isValidExternalOrderReference = function () {\n if (!ctrl.showExternalOrderReference) return true;\n return inputValidationService.isValidInput(ctrl.data.ext_order_reference);\n };\n ctrl.deleteKeyFromObject = function (object, key) {\n if (object[key]) delete object[key];\n };\n ctrl.handleInputChanged = function () {\n var isValid = isValidFiles && ctrl.isValidArrivalTime() && ctrl.isValidDeliveryTimeSlots() && ctrl.isValidVehicleDropLocation() && ctrl.isValidFinalDestination() && ctrl.isValidResourceBookings() && ctrl.isValidStaircase() && ctrl.isValidSpecifiedAddress() && ctrl.isValidNumberOfTransports() && ctrl.isValidGates();\n ctrl.isCompleted = isValid && ctrl.isPreviousSectionCompleted;\n ctrl.onCompletedChange({\n \"$isCompleted\": ctrl.isCompleted\n });\n };\n ctrl.initDateTimeEvents = function () {\n // Init date time pickers\n $('#arrival-time-datetimepicker').datetimepicker({\n format: 'YYYY-MM-DD HH:mm',\n locale: 'sv'\n });\n $('#arrival-time-datetimepicker').data().DateTimePicker.stepping(15);\n\n // Date time picker events\n $('#arrival-time-datetimepicker').on('dp.change', function () {\n var arrivalTime = $('#arrival-time-input').val();\n if (!ctrl.isInternal && ctrl.orderType === OrderTypeEnum.STORING) {\n arrivalTime = generalHelperService.limitDateTimeToCurrent(arrivalTime);\n }\n if (ctrl.minDeliveryDate) {\n var minDeliveryDate = !ctrl.isExpress ? ctrl.minDeliveryDate : generalHelperService.dateToDateTimeString(new Date());\n arrivalTime = generalHelperService.getValidFinalDateTime(minDeliveryDate, arrivalTime);\n }\n ctrl.data.arrival_time = arrivalTime;\n ctrl.handleInputChanged();\n if (!$scope.$$phase) {\n //$digest or $apply\n $scope.$apply();\n }\n });\n };\n ctrl.checkDirectDeliveryCollision = function () {\n if (!ctrl.showDeliveryTimeSlots) return;\n if (!ctrl.data.timeslots.time_i || !ctrl.data.timeslots.time_f || !ctrl.data.vehicle_drop_location_id) {\n ctrl.showDirectDeliveryCollisionWarning = false;\n return;\n }\n orderFactory.isTimeSlotAvailable(ctrl.data.timeslots.time_i, ctrl.data.timeslots.time_f, ctrl.data.vehicle_drop_location_id, ctrl.orderId).then(function (response) {\n var slotIsAvailable = response.data;\n ctrl.showDirectDeliveryCollisionWarning = !slotIsAvailable;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n ctrl.isConfirmedOrLater = function () {\n return taskStatusService.isConfirmedOrLater(ctrl.taskStatus);\n };\n ctrl.isDelivered = function () {\n return taskStatusService.isDelivered(ctrl.taskStatus);\n };\n\n // --- Final destination ---\n ctrl.clearFinalDestination = function () {\n removeSelectedFinalDestination();\n clearChildNodes(0);\n removeSelectedStaircase();\n ctrl.handleInputChanged();\n };\n ctrl.checkFinalDestination = function (node, disabled) {\n if (disabled) return;\n clearChildNodes(node.level);\n removeSelectedFinalDestination();\n node.is_destination = true;\n ctrl.handleInputChanged();\n };\n ctrl.parentHasChildren = function (parent) {\n if (typeof parent === 'undefined') return true;\n var hasChildren = false;\n angular.forEach(ctrl.finalDestinationLocations, function (loc) {\n if (loc.ParentLocationId === parent.location_id || loc.ParentLocationId === parent.LocationId) {\n hasChildren = true;\n }\n });\n return hasChildren;\n };\n function updateFinalDestination() {\n var depth = findTreeDepth(ctrl.finalDestinationLocations);\n setFinalDestinationLocationNodes(depth);\n if (ctrl.data.destination_location_id) {\n buildFinalDestinationTreeFromLocation(ctrl.data.destination_location_id);\n }\n ctrl.handleInputChanged();\n }\n function buildFinalDestinationTreeFromLocation(location_id) {\n // Find base\n var currentBase;\n angular.forEach(ctrl.finalDestinationLocations, function (loc) {\n if (loc.LocationId === location_id) {\n currentBase = loc;\n }\n });\n if (typeof currentBase === 'undefined') return;\n\n // Set Dropdown\n ctrl.finalDestinationLocationNodes[currentBase.Level - 2] = {\n level: currentBase.Level,\n location_id: currentBase.LocationId,\n location_name: currentBase.Name,\n is_scannable: currentBase.IsScannable,\n is_destination: true\n };\n do {\n // Find parent\n var parent;\n angular.forEach(ctrl.finalDestinationLocations, function (loc) {\n if (loc.LocationId === currentBase.ParentLocationId) {\n parent = loc;\n }\n });\n var prevBase = currentBase;\n currentBase = parent;\n\n // Set dropdown\n if (typeof currentBase !== 'undefined') {\n ctrl.finalDestinationLocationNodes[currentBase.Level - 2] = {\n level: currentBase.Level,\n location_id: currentBase.LocationId,\n location_name: currentBase.Name,\n is_scannable: currentBase.IsScannable\n };\n }\n } while (typeof currentBase !== 'undefined' && currentBase.Level !== prevBase.Level);\n }\n function findTreeDepth(nodes) {\n var depth = 0;\n angular.forEach(nodes, function (node) {\n if (node.Level > depth) {\n depth = node.Level;\n }\n });\n return depth;\n }\n function setFinalDestinationLocationNodes(depth) {\n ctrl.finalDestinationLocationNodes = [];\n for (var i = 0; i < depth; i++) {\n ctrl.finalDestinationLocationNodes.push({\n level: i + 1,\n location_name: '',\n is_destination: false\n });\n }\n }\n function clearChildNodes(level) {\n angular.forEach(ctrl.finalDestinationLocationNodes, function (loc) {\n if (loc.level > level) {\n loc.location_name = '';\n delete loc.location_id;\n delete loc.is_destination;\n delete loc.is_scannable;\n }\n });\n removeSelectedFinalDestination();\n }\n function removeSelectedFinalDestination() {\n angular.forEach(ctrl.finalDestinationLocationNodes, function (node) {\n node.is_destination = false;\n });\n ctrl.data.destination_location_id = null;\n ctrl.data.destination_location_name = '';\n }\n function getFinalDestination() {\n var selectedLocation = null;\n angular.forEach(ctrl.finalDestinationLocations, function (location) {\n if (location.LocationId == ctrl.data.destination_location_id) {\n selectedLocation = location;\n }\n });\n return selectedLocation ? selectedLocation : {\n LocationId: null,\n Name: null\n };\n }\n // --- Final destination end ---\n\n // --- Staircase ---\n ctrl.getCurrentSubProjectLocationNode = function () {\n var subProjects = [];\n angular.forEach(ctrl.finalDestinationLocations, function (loc) {\n if (loc.LocationTypeName === 'SubProject') {\n subProjects.push(loc);\n }\n });\n var selectedNode = null;\n angular.forEach(ctrl.finalDestinationLocationNodes, function (node) {\n var matchingLocation = null;\n angular.forEach(subProjects, function (loc) {\n if (loc.LocationId == node.location_id) {\n matchingLocation = loc;\n }\n });\n if (matchingLocation) {\n selectedNode = node;\n }\n });\n node = selectedNode ? selectedNode : {\n location_id: null,\n location_name: null\n };\n return node;\n };\n ctrl.handleStaircaseSelected = function (location) {\n ctrl.staircase_name = location.Name;\n ctrl.data.staircase_location_id = location.LocationId;\n ctrl.data.staircase_location_name = location.Name;\n ctrl.handleInputChanged();\n };\n function removeSelectedStaircase() {\n ctrl.data.staircase_location_id = null;\n ctrl.data.staircase_location_name = '';\n }\n\n // --- Staircase end ---\n\n function clearSection() {\n ctrl.data.n_transports = 1;\n ctrl.data.n_unbooked_transports = 0;\n ctrl.data.specified_address = false;\n setDropLocationDependingInfo(null);\n ctrl.clearFinalDestination();\n ctrl.data.timeslots = {};\n ctrl.data.resource_bookings = [];\n ctrl.data.staircase_location_id = null;\n ctrl.data.staircase_location_name = '';\n ctrl.handleInputChanged();\n }\n function setVisibiltyFlags() {\n ctrl.showArrivalTime = ctrl.orderType === OrderTypeEnum.TRANSSHIPMENT || ctrl.orderType === OrderTypeEnum.STORING || ctrl.orderType === OrderTypeEnum.MATERIAL;\n ctrl.showDeliveryTimeSlots = ctrl.orderType === OrderTypeEnum.DIRECT_DELIVERY || ctrl.orderType === OrderTypeEnum.RECURRING_DIRECT_DELIVERY || ctrl.orderType === OrderTypeEnum.GATE_BOOKING;\n ctrl.showNumberOfTransports = ctrl.orderType === OrderTypeEnum.DIRECT_DELIVERY;\n ctrl.showUnloadingPlace = ctrl.orderType === OrderTypeEnum.DIRECT_DELIVERY || ctrl.orderType === OrderTypeEnum.RECURRING_DIRECT_DELIVERY || ctrl.orderType == OrderTypeEnum.TRANSSHIPMENT || ctrl.orderType === OrderTypeEnum.MATERIAL || ctrl.orderType === OrderTypeEnum.RESOURCE_BOOKING;\n ctrl.showResourceBookings = ctrl.orderType === OrderTypeEnum.RESOURCE_BOOKING;\n ctrl.showSpecifiedAddress = ctrl.orderType === OrderTypeEnum.MATERIAL;\n ctrl.showExternalOrderReference = ctrl.orderType === OrderTypeEnum.STORING;\n ctrl.showDestinationInformationSelector = ctrl.orderType === OrderTypeEnum.MATERIAL;\n ctrl.showAdditionalOptions = ctrl.orderType === OrderTypeEnum.TRANSSHIPMENT || ctrl.orderType === OrderTypeEnum.STORING || ctrl.orderType === OrderTypeEnum.MATERIAL;\n ctrl.showExtendedAdditionalOptions = ctrl.orderType === OrderTypeEnum.DIRECT_DELIVERY || ctrl.orderType === OrderTypeEnum.RECURRING_DIRECT_DELIVERY;\n ctrl.showFileUpload = ctrl.orderType === OrderTypeEnum.DIRECT_DELIVERY || ctrl.orderType === OrderTypeEnum.RECURRING_DIRECT_DELIVERY || ctrl.orderType == OrderTypeEnum.TRANSSHIPMENT || ctrl.orderType === OrderTypeEnum.STORING || ctrl.orderType === OrderTypeEnum.MATERIAL || ctrl.orderType === OrderTypeEnum.RESOURCE_BOOKING;\n ctrl.isGateBooking = ctrl.orderType === OrderTypeEnum.GATE_BOOKING;\n ctrl.isResourceBooking = ctrl.orderType === OrderTypeEnum.RESOURCE_BOOKING;\n }\n function isEmpty(obj) {\n return obj && Object.keys(obj).length === 0 && Object.getPrototypeOf(obj) === Object.prototype;\n }\n function identifyRoles() {\n ctrl.isInternal = roleService.isInternal();\n ctrl.isWarehousePlanner = roleService.isWarehousePlanner();\n ctrl.isWarehouseOperator = roleService.isWarehouseOperator();\n }\n}\nangular.module('sp.components').component('sectionBookingChoice', {\n templateUrl: 'app/components/uiComponents/orderForm/sectionBookingChoice.html',\n controller: ['inputValidationService', 'generalHelperService', '$localStorage', 'orderFactory', 'taskStatusService', 'errorService', '$scope', 'roleService', SectionBookingChoiceController],\n bindings: {\n sectionHeader: '@',\n sectionNumberIconClass: '@',\n data: '<',\n orderType: '<',\n orderId: '<',\n taskStatus: '<',\n minDeliveryDate: ' now && $localStorage.megafilterCache.mainProjectId === vm.mainProjectId && $localStorage.megafilterCache.isArchive === vm.isArchive;\n }\n var orderTypes = generalHelperService.getEnumIds(OrderTypeEnum);\n vm.orderTypes = $filter('filter')(orderTypes, function (type) {\n return type !== OrderTypeEnum.GATE_BOOKING && type !== OrderTypeEnum.PACKAGE_COLLECTION;\n });\n vm.taskStatuses = generalHelperService.getEnumIds(TaskStatusTypeEnum);\n vm.orderTypeNameMap = generalHelperService.generateNameMapFromEnum(OrderTypeEnum);\n vm.deliveryStatusNameMap = generalHelperService.generateNameMapFromEnum(TaskStatusTypeEnum);\n vm.resetFilter = function () {\n vm.filter = megaFilterService.getEmptyFilter();\n vm.isEmpty = true;\n vm.updateDatePickersFromFilter();\n };\n function loadFilter(filter) {\n vm.filter = megaFilterService.copyFilter(filter);\n vm.updateDatePickersFromFilter();\n vm.updateIsEmpty();\n }\n vm.initFilter = function () {\n if (!currentFilter) {\n vm.resetFilter();\n } else {\n loadFilter(currentFilter);\n }\n vm.updateCount();\n };\n function generateNameMapFromFilterables(filterList) {\n var map = {};\n for (var i = 0; i < filterList.length; i++) {\n map[filterList[i].Id] = filterList[i].Name;\n }\n return map;\n }\n function generateIdListFromFilterables(filterList) {\n var array = [];\n for (var i = 0; i < filterList.length; i++) {\n array.push(filterList[i].Id);\n }\n return array;\n }\n vm.close = function () {\n $uibModalInstance.close(vm.filter);\n };\n vm.discard = function () {\n $uibModalInstance.dismiss();\n };\n vm.isSelected = function (id, filterList) {\n if (filterList) {\n return filterList.includes(id);\n }\n return false;\n };\n vm.toggleSelection = function (id, filterList) {\n if (vm.isSelected(id, filterList)) {\n var index = filterList.indexOf(id);\n if (index > -1) {\n filterList.splice(index, 1);\n }\n } else {\n filterList.push(id);\n }\n vm.update();\n };\n vm.updateIsEmpty = function () {\n vm.isEmpty = megaFilterService.isEmptyFilter(vm.filter);\n };\n vm.updateCount = function () {\n // FUTURE: This fits better in SPL256\n // filterCountFunction(vm.filter).then(\n // function (count) {\n // vm.count = count;\n // });\n };\n vm.update = function () {\n vm.updateIsEmpty();\n vm.updateCount();\n if (!$scope.$$phase) {\n $scope.$apply();\n }\n };\n function onChangeDateTimePicker1Change(event) {\n if (event.date) {\n vm.filter.deliveryTimeFrom = moment.utc(event.date.format('YYYY-MM-DD')).startOf('day').toDate();\n } else {\n vm.filter.deliveryTimeFrom = null;\n }\n ;\n vm.update();\n }\n function onChangeDateTimePicker2Change(event) {\n if (event.date) {\n vm.filter.deliveryTimeTo = moment.utc(event.date.format('YYYY-MM-DD')).endOf('day').toDate();\n } else {\n vm.filter.deliveryTimeTo = null;\n }\n ;\n vm.update();\n }\n function initDateTimeEvents() {\n // Date time picker events\n vm.datepicker1.on('dp.change', onChangeDateTimePicker1Change);\n vm.datepicker2.on('dp.change', onChangeDateTimePicker2Change);\n }\n ;\n vm.updateDatePickersFromFilter = function () {\n vm.datepicker1.data().DateTimePicker.date(vm.filter.deliveryTimeFrom);\n var newDate = moment(vm.filter.deliveryTimeTo).clone().startOf('day');\n vm.datepicker2.data().DateTimePicker.date(newDate);\n };\n vm.initDateTimePickers = function () {\n vm.datepicker1 = $('#megafilter-datetimepicker1');\n vm.datepicker2 = $('#megafilter-datetimepicker2');\n vm.datepicker1.datetimepicker({\n format: 'YYYY-MM-DD',\n locale: 'sv'\n });\n vm.datepicker1.data().DateTimePicker.stepping(15);\n vm.datepicker2.datetimepicker({\n format: 'YYYY-MM-DD',\n locale: 'sv'\n });\n vm.datepicker2.data().DateTimePicker.stepping(15);\n initDateTimeEvents();\n vm.initFilter();\n };\n return vm;\n}]);\nangular.module('sp.services').service('megaFilterModalService', ['$uibModal', function ($uibModal) {\n this.openFilter = function (_currentFilter, _isArchive) {\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/modals/megafilter/mega_filter.html',\n controller: 'MegaFilterController as vm',\n size: 'lg',\n windowClass: 'sp-modal-window',\n resolve: {\n currentFilter: function currentFilter() {\n return _currentFilter;\n },\n isArchive: function isArchive() {\n return _isArchive;\n }\n }\n });\n return modalInstance.result;\n };\n}]);\nangular.module('sp.services').service('orderFormModalService', ['$uibModal', function ($uibModal) {\n function getViewInformation(orderType) {\n var viewInfo = {};\n switch (orderType) {\n case OrderTypeEnum.DIRECT_DELIVERY:\n case OrderTypeEnum.RECURRING_DIRECT_DELIVERY:\n viewInfo.templateUrl = 'app/modals/orderForm/direct_delivery/direct_delivery_form.html';\n viewInfo.controller = 'DirectDeliveryFormController';\n break;\n case OrderTypeEnum.STORING:\n viewInfo.templateUrl = 'app/modals/orderForm/storing/storing_form.html';\n viewInfo.controller = 'StoringFormController';\n break;\n case OrderTypeEnum.TRANSSHIPMENT:\n viewInfo.templateUrl = 'app/modals/orderForm/transshipment/transshipment_form.html';\n viewInfo.controller = 'TransshipmentFormController';\n break;\n case OrderTypeEnum.MATERIAL:\n viewInfo.templateUrl = 'app/modals/orderForm/material/material_form.html';\n viewInfo.controller = 'MaterialFormController';\n break;\n case OrderTypeEnum.RESOURCE_BOOKING:\n viewInfo.templateUrl = 'app/modals/orderForm/resource_booking/resource_booking_form.html';\n viewInfo.controller = 'ResourceBookingFormController';\n break;\n default:\n return;\n }\n return viewInfo;\n }\n function openModal(orderId, _orderType, _copy, formType, _parentOrderId) {\n var viewInfo = getViewInformation(_orderType);\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: viewInfo.templateUrl,\n controller: viewInfo.controller,\n controllerAs: 'vm',\n size: 'lg',\n windowClass: 'sp-modal-window',\n resolve: {\n form_type: function form_type() {\n return formType;\n },\n order_id: function order_id() {\n return orderId;\n },\n copy: function copy() {\n return _copy;\n },\n orderType: function orderType() {\n return _orderType;\n },\n parentOrderId: function parentOrderId() {\n return _parentOrderId;\n }\n }\n });\n return modalInstance.result;\n }\n this.openView = function (orderId, orderType, copy) {\n return openModal(orderId, orderType, copy, 'view_order', undefined);\n };\n this.openManage = function (orderId, orderType, copy) {\n return openModal(orderId, orderType, copy, 'manage_order', undefined);\n };\n this.openCreate = function (orderType) {\n return openModal(-1, orderType, false, 'create_order', undefined);\n };\n this.openCreateFromReference = function (orderType, parentOrderId) {\n return openModal(-1, orderType, false, 'create_order', parentOrderId);\n };\n}]);\n'use strict';\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\nangular.module('serviplan').controller('WarehouseBalanceModalController', ['$uibModalInstance', '$scope', '$localStorage', 'roleService', 'materialFactory', function ($uibModalInstance, $scope, $localStorage, roleService, materialFactory) {\n var vm = this;\n vm.sessionMainProject = $localStorage.user.session_main_project;\n function loadMaterials() {\n materialFactory.getMaterials(vm.sessionMainProject.main_project_id).then(function (materials) {\n vm.articles = materials;\n });\n }\n loadMaterials();\n vm.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n vm.export = function () {\n materialFactory.getMaterialsExport(vm.sessionMainProject.main_project_id).then(function (blob) {\n // IE11: use the msSaveOrOpenBlob API\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\n window.navigator.msSaveOrOpenBlob(blob, 'stock_quantity.xlsx');\n }\n // Firefox and Chrome: simulate download link click\n else {\n var url = URL.createObjectURL(blob);\n var a = document.createElement('a');\n document.body.appendChild(a);\n a.style = 'display: none';\n a.href = url;\n a.download = 'stock_quantity.xlsx';\n a.click();\n URL.revokeObjectURL(url);\n document.body.removeChild(a);\n }\n });\n };\n $scope.$on('updatedUserData', function () {\n identifyRoles();\n });\n}]);\nangular.module('sp.services').service('warehouseBalanceModalService', ['$uibModal', function ($uibModal) {\n this.open = function () {\n var modalInstance = $uibModal.open({\n animation: true,\n backdrop: 'static',\n ariaLabelledBy: 'modal-title',\n ariaDescribedBy: 'modal-body',\n templateUrl: 'app/modals/warehouseBalance/warehouse_balance.html',\n controller: 'WarehouseBalanceModalController',\n controllerAs: 'vm',\n size: 'lg',\n windowClass: 'sp-modal-window'\n });\n return modalInstance.result;\n };\n}]);\n'use strict';\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\nangular.module('serviplan').controller('DirectDeliveryFormController', ['$uibModalInstance', 'form_type', 'order_id', 'copy', 'orderType', '$scope', '$filter', 'orderFactory', 'orderDirectDeliveryFactory', 'workOrderFactory', 'locationFactory', '$translate', '$localStorage', 'errorService', 'roleService', 'inputValidationService', 'taskStatusService', 'generalHelperService', 'orderFormModalService', 'dropdownService', 'ngToast', 'packageFactory', 'orderGateBookingFactory', '$log', '$q', 'ALLOWED_FILE_EXTENTIONS', function ($uibModalInstance, form_type, order_id, copy, orderType, $scope, $filter, orderFactory, orderDirectDeliveryFactory, workOrderFactory, locationFactory, $translate, $localStorage, errorService, roleService, inputValidationService, taskStatusService, generalHelperService, orderFormModalService, dropdownService, ngToast, packageFactory, orderGateBookingFactory, $log, $q, ALLOWED_FILE_EXTENTIONS) {\n var vm = this;\n vm.ALLOWED_FILE_EXTENTIONS = ALLOWED_FILE_EXTENTIONS;\n orderFactory.getGuid().then(function (response) {\n vm.formGuid = response.data;\n });\n initiateOrder();\n vm.sessionMainProject = $localStorage.user.session_main_project;\n vm.isSectionReceiversCompleted = false;\n vm.isSectionProjectCompleted = false;\n vm.isSectionDeliveryInformationCompleted = false;\n vm.isSectionBookingChoiceCompleted = false;\n vm.validated = false;\n vm.formValid = false;\n vm.order.order_type = orderType;\n vm.form_type = form_type;\n vm.canEdit = true;\n vm.canUpload = true;\n vm.order.pastConfirmed = false;\n vm.recurringWeekTemplate = [\n // Conform to backend: Sun = 0\n {\n day_name: 'MON',\n slots: [],\n week_day: 1,\n active: true\n }, {\n day_name: 'TUE',\n slots: [],\n week_day: 2\n }, {\n day_name: 'WED',\n slots: [],\n week_day: 3\n }, {\n day_name: 'THU',\n slots: [],\n week_day: 4\n }, {\n day_name: 'FRI',\n slots: [],\n week_day: 5\n }, {\n day_name: 'SAT',\n slots: [],\n week_day: 6\n }, {\n day_name: 'SUN',\n slots: [],\n week_day: 0\n }];\n\n // Additional setup START ---\n\n vm.isGateBookingOrder = orderType === OrderTypeEnum.GATE_BOOKING;\n function checkWorkOrderReferences() {\n var hasReference = false;\n if (vm.workOrderReferences) {\n angular.forEach(vm.workOrderReferences, function (data) {\n if (vm.order.proj.work_order_id === data.work_order_id) {\n hasReference = true;\n }\n });\n }\n return hasReference;\n }\n function identifyRoles() {\n vm.isAdmin = roleService.isAdmin();\n vm.isInternal = roleService.isInternal();\n vm.isCustomer = roleService.isCustomer();\n vm.isWarehouseOperator = roleService.isWarehouseOperator();\n vm.isWarehousePlanner = roleService.isWarehousePlanner();\n }\n identifyRoles();\n if (copy) vm.form_type = 'create_order';\n vm.hideWarnings = false;\n loadWorkOrders().then(function (response) {\n if (form_type === 'create_order') {\n fillCompanyOptions(vm.work_orders);\n } else if (form_type === 'view_order' || form_type === 'manage_order') {\n vm.workOrderReferences = vm.work_orders;\n loadOrder(order_id).then(function (response) {\n if (checkWorkOrderReferences()) {\n // Load work order data if we have access to it.\n vm.fillFormDataFromWorkOrder(vm.order.proj.work_order_id);\n } else {\n // User does not have permission to load work order data.\n // Hide warnings as we will not be able to edit the order.\n vm.hideWarnings = true;\n vm.loadDestinationLocationsForMainProject();\n }\n });\n }\n });\n\n // Additional setup END ---\n\n // Is editable if the orders WorkOrderId exists in the WorkOrderReferences.\n // WorkOrderReferences are the workorders which user are associated with. So when a user opens\n // an order in the list this is a way to check if the user can edit the form.\n function setCanEdit() {\n var canEdit = false;\n if (vm.form_type === 'create_order') {\n canEdit = true;\n }\n if (!canEdit && vm.isCustomer && taskStatusService.isNotified(vm.order.br.task_status)) {\n canEdit = checkWorkOrderReferences();\n }\n if (!canEdit && vm.isInternal && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canEdit = true;\n }\n if (!canEdit && vm.isAdmin && taskStatusService.isDelivered(vm.order.br.task_status)) {\n canEdit = true;\n }\n vm.canEdit = canEdit;\n }\n function setCanCancel() {\n var canCancel = false;\n if (vm.form_type !== \"create_order\") {\n if (vm.isCustomer && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCancel = checkWorkOrderReferences();\n }\n if (!canCancel && vm.isInternal && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCancel = true;\n }\n if (!canCancel && vm.isInternal && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canCancel = true;\n }\n if (!canCancel && vm.isAdmin && !taskStatusService.isCancelled(vm.order.br.task_status)) {\n canCancel = true;\n }\n }\n vm.canCancel = canCancel;\n }\n function setCanConfirm() {\n var canConfirm = false;\n if (vm.isInternal && taskStatusService.isNotified(vm.order.br.task_status)) {\n canConfirm = true;\n }\n vm.canConfirm = canConfirm;\n }\n function setCanRaiseStatus() {\n var canRaiseStatus = false;\n if (vm.isInternal && taskStatusService.isConfirmedOrLater(vm.order.br.task_status)) {\n canRaiseStatus = true;\n }\n vm.canRaiseStatus = canRaiseStatus;\n }\n function setCanCopy() {\n var canCopy = false;\n if (vm.isCustomer && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isCancelled(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isCancelled(vm.order.br.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isDelivered(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isDelivered(vm.order.br.task_status)) {\n canCopy = true;\n }\n vm.canCopy = canCopy;\n }\n function setCanRenotify() {\n var canRenotify = false;\n if (!canRenotify && vm.isInternal && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canRenotify = true;\n }\n vm.canRenotify = canRenotify;\n }\n function setCanUpload() {\n var canUpload = false;\n if (!taskStatusService.isCancelled(vm.order.br.task_status) && checkWorkOrderReferences() || vm.isAdmin) {\n canUpload = true;\n }\n vm.canUpload = canUpload;\n }\n function setPermissions() {\n setCanEdit();\n setCanCancel();\n setCanConfirm();\n setCanRaiseStatus();\n setCanCopy();\n setCanRenotify();\n setCanUpload();\n }\n function loadWorkOrders() {\n if (!vm.sessionMainProject) return $q.reject();\n return workOrderFactory.getWorkOrders(vm.sessionMainProject.main_project_id, false).then(function (response) {\n var data = response.data;\n var workOrders = workOrderFactory.repackageWorkOrderDTOArray(data);\n if (vm.isGateBookingOrder) {\n // Only include workorders with gateIntegration.\n workOrders = $filter('filter')(workOrders, {\n has_gate_integration: true\n }, true);\n }\n vm.work_orders = workOrders;\n }, function (error) {\n errorService.handleError(error);\n });\n }\n function fillCompanyOptions(workOrders) {\n vm.companies = workOrderFactory.extractUniqueCompaniesFromWorkOrders(workOrders);\n vm.order.proj.company_id = -1;\n if (!vm.companies || vm.companies.length === 0) {\n vm.order.proj.company_name = $translate.instant('NON_AVAILABLE') + '...';\n } else if (vm.companies.length === 1) {\n vm.order.proj.company_id = vm.companies[0].company_id;\n vm.order.proj.company_name = vm.companies[0].company_name;\n }\n }\n vm.loadDestinationLocationsForMainProject = function () {\n var mainProjectId = vm.sessionMainProject.main_project_id;\n locationFactory.getDestinationLocations(mainProjectId).then(function (response) {\n vm.destinationLocations = response.data;\n vm.destinationLocationPath = [];\n var depth = findTreeDepth(vm.destinationLocations);\n fillDestinationLocationPath(vm.destinationLocationPath, depth);\n buildPath(vm.order.bc.destination_location_id);\n });\n };\n vm.fillFormDataFromWorkOrder = function (workOrderId) {\n orderFactory.getDirectDeliveryFormBase(workOrderId).then(function (response) {\n var data = response.data;\n\n // Load from base if not from order\n if (form_type === 'create_order') {\n vm.order.proj.id_number = data.ErpSystemReference;\n vm.order.proj.contact_person = {\n \"contact_name\": data.OrderCreatorContactName,\n \"phone_nr\": data.OrderCreatorContactPhone,\n \"email\": data.OrderCreatorContactEmail,\n \"sms_notif\": data.OrderCreatorContactWantSms,\n \"email_notif\": data.OrderCreatorContactWantEmail\n };\n }\n vm.order.di.vehicle_types = data.VehicleTypes;\n vm.order.bc.hasGateIntegration = data.HasGateIntegration;\n vm.order.bc.extra_gates = data.MainProjectGates;\n vm.order.bc.gates = data.ProjectGates;\n vm.vehicleDropLocations = data.VehicleDropLocations;\n vm.destinationLocations = data.DestinationLocations;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.onFormResetAction = function () {\n setDefaultOrderValues();\n };\n function initiateOrder() {\n vm.order = {};\n vm.order.proj = {};\n setDefaultOrderValues();\n }\n function setDefaultOrderValues() {\n delete vm.orderDTO;\n vm.order.dr = {};\n vm.order.di = {};\n vm.order.bc = {};\n vm.order.br = {};\n vm.order.ar = {};\n vm.order.packages = [];\n vm.validated = false;\n }\n\n // Load order\n function loadOrder(id) {\n return orderFactory.getOrder(id).then(function (response) {\n var data = response.data;\n vm.orderDTO = data;\n vm.order.dto = data;\n vm.order.order_id = id;\n vm.order.task_status = data.TaskStatus;\n vm.order.order_type = data.OrderType;\n\n // Section 1 - Project (proj)\n vm.order.proj.id_number = data.ErpSystemReference;\n vm.order.proj.work_order_name = data.WorkOrderName;\n vm.order.proj.work_order_id = data.WorkOrderId;\n vm.order.proj.company_name = data.WorkOrderCompanyName;\n vm.order.proj.company_id = data.WorkOrderCompanyId;\n vm.order.proj.order_number = data.OrderNumber;\n vm.order.proj.contact_person = {\n \"contact_name\": data.OrderCreatorContactName,\n \"contact_id\": data.OrderCreatorContactId,\n \"phone_nr\": data.OrderCreatorContactPhone,\n \"email\": data.OrderCreatorContactEmail,\n \"sms_notif\": data.OrderCreatorContactWantSms,\n \"email_notif\": data.OrderCreatorContactWantEmail\n };\n // Section 2 - Receivers (dr)\n vm.order.dr.receiver1 = {\n \"contact_name\": data.DeliveryReceiver1ContactName,\n \"contact_id\": data.DeliveryReceiver1ContactId,\n \"phone_nr\": data.DeliveryReceiver1ContactPhone,\n \"email\": data.DeliveryReceiver1ContactEmail,\n \"sms_notif\": data.DeliveryReceiver1ContactWantSms,\n \"email_notif\": data.DeliveryReceiver1ContactWantEmail\n };\n vm.order.dr.receiver2 = {\n \"contact_name\": data.DeliveryReceiver2ContactName,\n \"contact_id\": data.DeliveryReceiver2ContactId,\n \"phone_nr\": data.DeliveryReceiver2ContactPhone,\n \"email\": data.DeliveryReceiver2ContactEmail,\n \"sms_notif\": data.DeliveryReceiver2ContactWantSms,\n \"email_notif\": data.DeliveryReceiver2ContactWantEmail\n };\n vm.order.dr.receiver3 = {\n \"contact_name\": data.DeliveryReceiver3ContactName,\n \"contact_id\": data.DeliveryReceiver3ContactId,\n \"phone_nr\": data.DeliveryReceiver3ContactPhone,\n \"email\": data.DeliveryReceiver3ContactEmail,\n \"sms_notif\": data.DeliveryReceiver3ContactWantSms,\n \"email_notif\": data.DeliveryReceiver3ContactWantEmail\n };\n\n // Section 3 - Delivery information (di)\n vm.order.di = {\n \"supplier\": data.Supplier,\n \"vehicle_type_id\": data.VehicleTypeId,\n \"vehicle_type_name\": data.VehicleTypeCode,\n \"material\": data.Content,\n \"n_materials\": data.Quantity\n };\n // Section 4 - Booking choice (bc)\n vm.order.bc.vehicle_drop_location_name = data.VehicleDropLocationName;\n vm.order.bc.vehicle_drop_location_id = data.VehicleDropLocationId;\n vm.order.bc.gate_in_id = data.InGateId;\n vm.order.bc.gate_in_name = data.InGateName;\n vm.order.bc.gate_out_name = data.OutGateName;\n vm.order.bc.gate_out_id = data.OutGateId;\n vm.order.bc.extra_gate_in_id = data.ExtraInGateId;\n vm.order.bc.extra_gate_in_name = data.ExtraInGateName;\n vm.order.bc.extra_gate_out_id = data.ExtraOutGateId;\n vm.order.bc.extra_gate_out_name = data.ExtraOutGateName;\n vm.order.bc.n_transports = data.NumTransports;\n vm.order.bc.n_unbooked_transports = data.NumUnbookedTransports;\n vm.order.bc.allowed_passages = data.AllowedPassages;\n vm.order.bc.unloading_help = data.HasAdditionalServiceUnloadingHelp;\n vm.order.bc.guiding_help = data.HasAdditionalServiceGuiding;\n vm.order.bc.is_unannounced_goods = !!data.IsUnannouncedGoods;\n vm.order.bc.is_unreachable = !!data.IsUnreachable;\n vm.order.bc.is_unused_resource = !!data.IsUnusedResource;\n vm.order.bc.destination_location_id = data.DestinationLocationId;\n vm.order.bc.staircase_location_id = data.StaircaseLocationId;\n vm.order.bc.staircase_location_name = data.StaircaseLocationName;\n vm.order.bc.comments = data.Comments;\n vm.order.bc.file_attachments = data.Files;\n if (data.OrderType === OrderTypeEnum.RECURRING_DIRECT_DELIVERY) {\n vm.order.bc.timeslots = {\n \"recurring_start\": $filter('toDate')(data.RecurringStart),\n \"recurring_end\": $filter('toDate')(data.RecurringEnd),\n \"week_frequency\": data.WeekTypeId.toString(),\n \"recurring_week\": orderDirectDeliveryFactory.loadRecurringWeek(vm.recurringWeekTemplate, data.RecurringTimes),\n \"allowed_passages\": data.AllowedPassages\n };\n vm.isRecurringOrder = true;\n } else {\n vm.order.bc.timeslots = {\n \"time_i\": $filter('toDateTime')(data.SlotTimeMin),\n \"time_f\": $filter('toDateTime')(data.SlotTimeMax)\n };\n }\n if (data.OrderType === OrderTypeEnum.GATE_BOOKING) {\n vm.isGateBookingOrder = true;\n vm.order.proj.sms_notif = false;\n vm.order.proj.email_notif = false;\n }\n\n // Section 5 - Booking reference (br)\n vm.order.br.registered = $filter('toDateTime')(data.Created);\n vm.order.br.status = $translate.instant(data.TaskStatusTypeAlias);\n vm.order.br.task_status = data.TaskStatus;\n vm.order.br.gate_code = data.GatePassCode;\n vm.order.br.used_passages = data.UsedPassages;\n vm.order.br.order_number = data.OrderNumber;\n vm.order.br.gate_data_sent = data.LastPassCodeRequest ? $filter('toDateTime')(data.LastPassCodeRequest) : '';\n vm.order.br.last_notification_sent = data.LastNotificationSent ? $filter('toDateTime')(data.LastNotificationSent) : '';\n vm.order.br.gate_booking_failed = data.LastUnhandledPasscodeNotificationSent ? $filter('toDateTime')(data.LastUnhandledPasscodeNotificationSent) : '';\n vm.order.br.gate_booking_failed_code = data.WellSecErrorCode;\n vm.showPassCodeFailedError = !!vm.order.br.gate_booking_failed_code;\n\n // Packages\n vm.order.packages = [];\n for (var i = 0; i < data.Packages.length; i++) {\n vm.order.packages.push(packageFactory.repackageDTO(data.Packages[i]));\n }\n vm.order.pastConfirmed = taskStatusService.isConfirmedOrLater(vm.order.br.task_status);\n if (copy) {\n delete vm.order.order_id;\n vm.order.br = {};\n vm.order.bc.file_attachments = [];\n vm.order.bc.file_attachments_to_add = [];\n vm.order.packages = [];\n vm.order.proj.order_number = '';\n }\n getNextStatus();\n setPermissions();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n\n // Status management\n vm.setNextStatus = function () {\n if (vm.order.task_status !== vm.order.nextTaskStatus) {\n orderFactory.setNextStatus(order_id).then(function () {\n ngToast.success(\"Status ändrat.\");\n vm.order.br.status = vm.order.nextTaskStatusName;\n vm.order.br.task_status = vm.order.nextTaskStatus;\n vm.order.task_status = vm.order.nextTaskStatus;\n getNextStatus();\n }, function (error) {\n ngToast.danger(\"Det gick inte att ändra status.\");\n $log.error(error);\n });\n }\n };\n function getNextStatus() {\n orderFactory.getNextStatus(vm.order.order_type, vm.order.task_status).then(function (result) {\n vm.order.nextTaskStatus = result.data;\n vm.order.nextTaskStatusName = $translate.instant(generalHelperService.getKeyByValue(TaskStatusTypeEnum, vm.order.nextTaskStatus));\n });\n }\n vm.createOrder = function (addBookings) {\n validateForm();\n if (!vm.formValid || vm.lockCall) {\n return;\n }\n vm.lockCall = true;\n var orderDTO;\n if (vm.isGateBookingOrder) orderDTO = orderGateBookingFactory.createOrderDTO(vm.order, TaskStatusTypeEnum.NOTIFIED);else if (vm.isRecurringOrder) orderDTO = orderDirectDeliveryFactory.createRecurringOrderDTO(vm.order, TaskStatusTypeEnum.NOTIFIED);else if (!vm.isRecurringOrder) orderDTO = orderDirectDeliveryFactory.createOrderDTO(vm.order, TaskStatusTypeEnum.NOTIFIED);\n orderFactory.createOrder(orderDTO, vm.order.bc.file_attachments_to_add, vm.formGuid).then(function (response) {\n var results = {\n success: true,\n copy: false\n };\n if (addBookings) {\n var parentOrderId = response.data;\n var resourceBookingResults = orderFormModalService.openCreateFromReference(OrderTypeEnum.RESOURCE_BOOKING, parentOrderId);\n results.success = resourceBookingResults.success;\n }\n vm.lockCall = false;\n $uibModalInstance.close(results);\n }, function (error) {\n vm.lockCall = false;\n if (error.status === 409) {\n ngToast.warning(\"Kunde inte spara formuläret, ordern finns redan.\");\n } else {\n ngToast.danger(\"Det gick inte att spara formuläret.\");\n }\n errorService.handleError(error);\n });\n };\n vm.updateOrder = function () {\n validateForm();\n if (!vm.formValid) {\n return;\n }\n var orderDTO;\n if (vm.isGateBookingOrder) orderDTO = orderGateBookingFactory.createOrderDTO(vm.order, '');else if (vm.isRecurringOrder) orderDTO = orderDirectDeliveryFactory.createRecurringOrderDTO(vm.order, '');else if (!vm.isRecurringOrder) orderDTO = orderDirectDeliveryFactory.createOrderDTO(vm.order, '');\n var options = {\n fileAttachments: vm.order.bc.file_attachments_to_add\n };\n orderFactory.updateOrder(vm.order.order_id, orderDTO, options).then(function () {\n var results = {\n success: true,\n copy: false\n };\n $uibModalInstance.close(results);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.confirmOrder = function () {\n validateForm();\n if (!vm.formValid) {\n return;\n }\n var orderDTO;\n if (vm.isGateBookingOrder) orderDTO = orderGateBookingFactory.createOrderDTO(vm.order, '');else if (vm.isRecurringOrder) orderDTO = orderDirectDeliveryFactory.createRecurringOrderDTO(vm.order, '');else if (!vm.isRecurringOrder) orderDTO = orderDirectDeliveryFactory.createOrderDTO(vm.order, '');\n var options = {\n fileAttachments: vm.order.bc.file_attachments_to_add\n };\n orderFactory.confirmOrder(vm.order.order_id, orderDTO, options).then(function () {\n var results = {\n success: true,\n copy: false\n };\n $uibModalInstance.close(results);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.copyOrder = function () {\n var results = {\n success: true,\n copy: true\n };\n $uibModalInstance.close(results);\n };\n vm.cancelOrder = function () {\n orderFactory.cancelOrder(vm.orderDTO.OrderId, vm.orderDTO).then(function () {\n var results = {\n success: true,\n copy: false\n };\n $uibModalInstance.close(results);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n // --- VALIDATION ---\n vm.handleValidationChange = function (source, value) {\n switch (source) {\n case \"section_project\":\n vm.isSectionProjectCompleted = value;\n break;\n case \"section_receivers\":\n vm.isSectionReceiversCompleted = value;\n break;\n case \"section_delivery_information\":\n vm.isSectionDeliveryInformationCompleted = value;\n break;\n case \"section_booking_choice\":\n vm.isSectionBookingChoiceCompleted = value;\n break;\n default:\n console.log(source + \" is not a valid source\");\n break;\n }\n };\n function checkAllSectionsDone() {\n if (vm.isSectionProjectCompleted && vm.isSectionReceiversCompleted && (vm.isSectionDeliveryInformationCompleted || vm.isGateBookingOrder) && vm.isSectionBookingChoiceCompleted) {\n vm.formValid = true;\n } else vm.formValid = false;\n }\n function validateForm() {\n vm.validated = true;\n checkAllSectionsDone();\n return vm.formValid;\n }\n vm.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n vm.isValidEmail = function (input) {\n return inputValidationService.isValidEmail(input);\n };\n vm.isConfirmedOrLater = function () {\n return taskStatusService.isConfirmedOrLater(vm.order.br.task_status);\n };\n vm.deleteKeyFromObject = function (object, key) {\n if (object[key]) delete object[key];\n };\n vm.renotify = function () {\n orderFactory.renotifyDirectDeliveryOrder(vm.orderDTO.OrderId);\n orderFactory.renotifyOrderStatus(vm.orderDTO.OrderId);\n };\n vm.passCodeTryAgain = function () {\n orderFactory.passCodeTryAgain(vm.order.order_id).then(function () {\n vm.showPassCodeFailedError = false;\n }, function () {\n vm.showPassCodeFailedError = true;\n });\n };\n vm.getFilePath = function (orderId, fileName) {\n return orderFactory.createFileLink(orderId, fileName);\n };\n vm.setIsRecurringOrder = function (isRecurringOrder) {\n vm.isRecurringOrder = isRecurringOrder;\n };\n vm.openDropdown = dropdownService.openDropdown;\n\n // EVENT MANAGEMENT\n\n // Watch for our custom `fileselect` event\n // FUTURE: This should be done using a directive instead\n vm.initFileSelectEvent = function () {\n $(':file').on('fileselect', function (event, numFiles, label) {\n var input = $('#fileSelectedText');\n log = numFiles > 1 ? numFiles + ' filer valda' : label;\n if (input) {\n input.val(log);\n } else {\n if (log) alert(log);\n }\n });\n };\n $scope.$on('updatedUserData', function () {\n identifyRoles();\n });\n}]);\n'use strict';\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\nangular.module('serviplan').controller('MaterialFormController', ['$uibModalInstance', 'form_type', 'order_id', 'copy', '$scope', '$filter', 'orderFactory', 'workOrderFactory', 'locationFactory', '$translate', '$localStorage', 'errorService', 'dropdownService', 'shippingFactory', 'orderMaterialFactory', 'printerFactory', 'roleService', 'inputValidationService', 'taskStatusService', 'generalHelperService', 'orderFormModalService', 'ngToast', 'packageFactory', '$log', '$q', 'ALLOWED_FILE_EXTENTIONS', function ($uibModalInstance, form_type, order_id, copy, $scope, $filter, orderFactory, workOrderFactory, locationFactory, $translate, $localStorage, errorService, dropdownService, shippingFactory, orderMaterialFactory, printerFactory, roleService, inputValidationService, taskStatusService, generalHelperService, orderFormModalService, ngToast, packageFactory, $log, $q, ALLOWED_FILE_EXTENTIONS) {\n var vm = this;\n vm.ALLOWED_FILE_EXTENTIONS = ALLOWED_FILE_EXTENTIONS;\n orderFactory.getGuid().then(function (responce) {\n vm.formGuid = responce.data;\n });\n initiateOrder();\n vm.sessionMainProject = $localStorage.user.session_main_project;\n vm.work_orders = [];\n vm.companies = [];\n vm.isSectionReceiversCompleted = false;\n vm.sectionTwoDone = false;\n vm.isSectionProjectCompleted = false;\n vm.isSectionBookingChoiceCompleted = false;\n vm.sectionFiveDone = false;\n vm.validated = false;\n vm.formValid = false;\n vm.timingSet = false;\n vm.order.ar.file_attachments = [];\n vm.order.order_type = OrderTypeEnum.MATERIAL;\n vm.form_type = form_type;\n vm.canEdit = true;\n vm.canUpload = true;\n vm.hideWarnings = false;\n vm.hideArticleBalance = false;\n\n //Roles\n function identifyRoles() {\n vm.isAdmin = roleService.isAdmin();\n vm.isInternal = roleService.isInternal();\n vm.isCustomer = roleService.isCustomer();\n }\n identifyRoles();\n\n // Additional setup Start ---\n\n if (copy) {\n vm.form_type = 'create_order';\n }\n loadWorkOrders().then(function (response) {\n if (form_type === 'create_order') {\n fillCompanyOptions(vm.work_orders);\n } else if (form_type === 'view_order' || form_type === 'manage_order') {\n vm.workOrderReferences = vm.work_orders;\n loadOrder(order_id).then(function (response) {\n if (checkWorkOrderReferences()) {\n // Load work order data if we have access to it.\n vm.fillFormDataFromWorkOrder(vm.order.proj.work_order_id);\n } else {\n // User does not have permission to load work order data.\n // Hide warnings as user will not be able to edit the order.\n vm.hideWarnings = true;\n // Hide article balance as user does not have access to the available articles.\n vm.hideArticleBalance = true;\n if (!vm.order.bc.specified_address) {\n vm.loadDestinationLocationsForMainProject();\n vm.evaluateProgress();\n }\n }\n });\n }\n });\n\n // Additional setup END ---\n\n function checkWorkOrderReferences() {\n var hasReference = false;\n if (vm.workOrderReferences) {\n angular.forEach(vm.workOrderReferences, function (data) {\n if (vm.order.proj.work_order_id === data.work_order_id) {\n hasReference = true;\n }\n });\n }\n return hasReference;\n }\n\n // Is editable if the orders WorkOrderId exists in the WorkOrderReferences.\n // WorkOrderReferences are the workorders which user are associated with. So when a user opens\n // an order in the list this is a way to check if the user can edit the form.\n function setCanEdit() {\n var canEdit = false;\n if (vm.form_type === 'create_order') {\n canEdit = true;\n }\n if (!canEdit && vm.isCustomer && taskStatusService.isNotified(vm.order.br.task_status)) {\n canEdit = checkWorkOrderReferences();\n }\n if (!canEdit && vm.isInternal && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canEdit = true;\n }\n if (!canEdit && vm.isInternal && taskStatusService.isPicked(vm.order.br.task_status)) {\n canEdit = true;\n }\n if (!canEdit && vm.isInternal && (taskStatusService.isAssignedToTransport(vm.order.br.task_status) || taskStatusService.isAssignedToRoute(vm.order.br.task_status))) {\n canEdit = true;\n }\n if (!canEdit && vm.isAdmin && taskStatusService.isDelivered(vm.order.br.task_status)) {\n canEdit = true;\n }\n vm.canEdit = canEdit;\n }\n function setCanCancel() {\n var canCancel = false;\n if (vm.form_type !== \"create_order\") {\n if (vm.isCustomer && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCancel = checkWorkOrderReferences();\n }\n if (!canCancel && vm.isInternal && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCancel = true;\n }\n if (!canCancel && vm.isInternal && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canCancel = true;\n }\n if (!canCancel && vm.isInternal && taskStatusService.isPicked(vm.order.br.task_status) && !vm.order.delivery_date && !vm.order.packages.length) {\n canCancel = true;\n }\n if (!canCancel && vm.isAdmin && !taskStatusService.isCancelled(vm.order.br.task_status)) {\n canCancel = true;\n }\n }\n vm.canCancel = canCancel;\n }\n function setCanConfirm() {\n var canConfirm = false;\n if (vm.isInternal && taskStatusService.isNotified(vm.order.br.task_status)) {\n canConfirm = true;\n }\n vm.canConfirm = canConfirm;\n }\n function setCanRaiseStatus() {\n var canRaiseStatus = false;\n if (vm.isInternal && taskStatusService.isConfirmedOrLater(vm.order.br.task_status)) {\n canRaiseStatus = true;\n }\n vm.canRaiseStatus = canRaiseStatus;\n }\n function setCanCopy() {\n var canCopy = false;\n if (vm.isCustomer && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isPicked(vm.order.br.task_status)) {\n //--\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isPicked(vm.order.br.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && (taskStatusService.isAssignedToTransport(vm.order.br.task_status) || taskStatusService.isAssignedToRoute(vm.order.br.task_status))) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && (taskStatusService.isAssignedToTransport(vm.order.br.task_status) || taskStatusService.isAssignedToRoute(vm.order.br.task_status))) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isCancelled(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isCancelled(vm.order.br.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isDelivered(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isDelivered(vm.order.br.task_status)) {\n canCopy = true;\n }\n vm.canCopy = canCopy;\n }\n function setCanPrint() {\n var canPrint = false;\n if (vm.isInternal && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canPrint = true;\n }\n if (!canPrint && vm.isInternal && taskStatusService.isPicked(vm.order.br.task_status)) {\n canPrint = true;\n }\n if (!canPrint && vm.isInternal && (taskStatusService.isAssignedToTransport(vm.order.br.task_status) || taskStatusService.isAssignedToRoute(vm.order.br.task_status))) {\n canPrint = true;\n }\n if (!canPrint && vm.isInternal && taskStatusService.isDelivered(vm.order.br.task_status)) {\n canPrint = true;\n }\n vm.canPrint = canPrint;\n }\n function setCanRenotify() {\n var canRenotify = false;\n if (!canRenotify && vm.isInternal && taskStatusService.isConfirmedOrLater(vm.order.br.task_status) && !taskStatusService.isDelivered(vm.order.br.task_status)) {\n canRenotify = true;\n }\n vm.canRenotify = canRenotify;\n }\n function setCanUpload() {\n var canUpload = false;\n if (!taskStatusService.isCancelled(vm.order.br.task_status) && checkWorkOrderReferences() || vm.isAdmin) {\n canUpload = true;\n }\n vm.canUpload = canUpload;\n }\n function setPermissions() {\n setCanEdit();\n setCanCancel();\n setCanConfirm();\n setCanRaiseStatus();\n setCanCopy();\n setCanPrint();\n setCanUpload();\n setCanRenotify();\n }\n function loadWorkOrders() {\n if (!vm.sessionMainProject) return $q.reject();\n return workOrderFactory.getWorkOrders(vm.sessionMainProject.main_project_id, false).then(function (response) {\n vm.work_orders = workOrderFactory.repackageWorkOrderDTOArray(response.data);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n function fillCompanyOptions(workOrders) {\n vm.companies = workOrderFactory.extractUniqueCompaniesFromWorkOrders(workOrders);\n vm.order.proj.company_id = -1;\n if (!vm.companies || vm.companies.length === 0) {\n vm.order.proj.company_name = $translate.instant('NON_AVAILABLE') + '...';\n } else if (vm.companies.length === 1) {\n vm.order.proj.company_id = vm.companies[0].company_id;\n vm.order.proj.company_name = vm.companies[0].company_name;\n }\n }\n function loadPrinters() {\n if (!vm.sessionMainProject || !vm.isInternal) {\n return;\n }\n printerFactory.getPrintersByMainProjectId(vm.sessionMainProject.main_project_id).then(function (response) {\n var data = response.data;\n vm.printers = printerFactory.repackageDTOArray(data);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n loadPrinters();\n function loadShippings() {\n if (!vm.sessionMainProject || !vm.isInternal) {\n return;\n }\n shippingFactory.getShippingsByMainProjectId(false, vm.sessionMainProject.main_project_id).then(function (response) {\n var data = response.data;\n vm.shippings = shippingFactory.repackageDTOArray(data);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n loadShippings();\n function getUniqueStorageLocations(articles) {\n var out = [];\n for (var i = 0; i < articles.length; i++) {\n var isUnique = true;\n for (var j = 0; j < out.length; j++) {\n if (articles[i].StorageLocation === out[j].storage_location) {\n isUnique = false;\n break;\n }\n }\n if (isUnique) {\n out.push({\n storage_location: articles[i].StorageLocation\n });\n }\n }\n return out;\n }\n vm.loadDestinationLocationsForMainProject = function () {\n var mainProjectId = vm.sessionMainProject.main_project_id;\n locationFactory.getDestinationLocations(mainProjectId).then(function (response) {\n vm.destinationLocations = response.data;\n });\n };\n vm.fillFormDataFromWorkOrder = function (workOrderId) {\n // FUTURE: Unnecessary to ask for articles in stock if order is confirmed!\n orderFactory.getMaterialFormBase(workOrderId).then(function (response) {\n // MaterialOrderFormBaseDTO\n var data = response.data;\n\n // Load from base if not from order\n if (form_type === 'create_order') {\n vm.order.proj.id_number = data.ErpSystemReference;\n vm.order.proj.contact_person = {\n \"contact_name\": data.OrderCreatorContactName,\n \"phone_nr\": data.OrderCreatorContactPhone,\n \"email\": data.OrderCreatorContactEmail,\n \"sms_notif\": data.OrderCreatorContactWantSms,\n \"email_notif\": data.OrderCreatorContactWantEmail\n };\n }\n vm.order.minOrderDate = data.MinOrderDate ? $filter('toDateTime')(data.MinOrderDate) : null;\n vm.order.wb.articles = vm.isConfirmedOrLater() ? orderMaterialFactory.repackageArticleOrderLineDTOArray(vm.order.dto.ArticleOrderLines) : orderMaterialFactory.repackageArticleDTOsAsArticleOrderLineArray(data.Articles, vm.order.wb.ordered_articles);\n\n // Update Epix owner number from the Epix article query. Will update workorder in db when the order is saved.\n if (data.Articles && data.Articles.length > 0) {\n vm.order.proj.epix_owner_number = data.Articles[0].ProductOwnerNumber;\n }\n vm.order.wb.storage_locations = getUniqueStorageLocations(data.Articles);\n vm.order.wb.storage_location = \"\";\n if (vm.order.wb.ordered_articles && vm.order.wb.ordered_articles.length > 0) {\n vm.order.wb.storage_location = vm.order.wb.ordered_articles[0].storage_location;\n } else if (vm.order.wb.storage_locations.length > 0) {\n vm.order.wb.storage_location = vm.order.wb.storage_locations[0].storage_location;\n }\n vm.vehicleDropLocations = data.VehicleDropLocations;\n vm.destinationLocations = data.DestinationLocations;\n vm.evaluateProgress();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.onFormResetAction = function () {\n setDefaultOrderValues();\n vm.evaluateProgress();\n };\n function initiateOrder() {\n vm.order = {};\n vm.order.proj = {};\n setDefaultOrderValues();\n }\n function setDefaultOrderValues() {\n vm.order.wb = {};\n vm.order.dr = {};\n vm.order.bc = {};\n vm.order.br = {};\n vm.order.si = {};\n vm.order.ar = {};\n vm.order.packages = [];\n vm.validated = false;\n }\n vm.getFilePath = function (orderId, fileName) {\n return orderFactory.createFileLink(orderId, fileName);\n };\n function loadOrder(id) {\n return orderFactory.getOrder(id).then(function (response) {\n // MaterialOrderDTO (:OrderDTO)\n var data = response.data;\n vm.orderDTO = data;\n vm.order.dto = data;\n vm.order.order_id = id;\n vm.order.task_status = data.TaskStatus;\n vm.order.delivery_date = data.DeliveryDate;\n vm.order.order_type = data.OrderType;\n\n // Section 1 - Project (proj)\n vm.order.proj.id_number = data.ErpSystemReference;\n vm.order.proj.work_order_name = data.WorkOrderName;\n vm.order.proj.work_order_id = data.WorkOrderId;\n vm.order.proj.epix_owner_number = null; // Only used to send updated data from epix to backend\n vm.order.proj.company_name = data.WorkOrderCompanyName;\n vm.order.proj.company_id = data.WorkOrderCompanyId;\n vm.order.proj.order_number = data.OrderNumber;\n vm.order.proj.contact_person = {\n \"contact_name\": data.OrderCreatorContactName,\n \"contact_id\": data.OrderCreatorContactId,\n \"phone_nr\": data.OrderCreatorContactPhone,\n \"email\": data.OrderCreatorContactEmail,\n \"sms_notif\": data.OrderCreatorContactWantSms,\n \"email_notif\": data.OrderCreatorContactWantEmail\n };\n // Section 2 - Warehouse balance (wb)\n\n vm.order.wb.articles = orderMaterialFactory.repackageArticleOrderLineDTOArray(data.ArticleOrderLines);\n vm.order.wb.ordered_articles = orderMaterialFactory.repackageArticleOrderLineDTOArray(data.ArticleOrderLines);\n vm.order.wb.storage_location = \"\";\n if (vm.order.wb.ordered_articles && vm.order.wb.ordered_articles.length > 0) {\n vm.order.wb.storage_location = vm.order.wb.ordered_articles[0].storage_location;\n }\n\n // Section 3 - Receivers (dr)\n vm.order.dr.receiver1 = {\n \"contact_name\": data.DeliveryReceiver1ContactName,\n \"contact_id\": data.DeliveryReceiver1ContactId,\n \"phone_nr\": data.DeliveryReceiver1ContactPhone,\n \"email\": data.DeliveryReceiver1ContactEmail,\n \"sms_notif\": data.DeliveryReceiver1ContactWantSms,\n \"email_notif\": data.DeliveryReceiver1ContactWantEmail\n };\n vm.order.dr.receiver2 = {\n \"contact_name\": data.DeliveryReceiver2ContactName,\n \"contact_id\": data.DeliveryReceiver2ContactId,\n \"phone_nr\": data.DeliveryReceiver2ContactPhone,\n \"email\": data.DeliveryReceiver2ContactEmail,\n \"sms_notif\": data.DeliveryReceiver2ContactWantSms,\n \"email_notif\": data.DeliveryReceiver2ContactWantEmail\n };\n vm.order.dr.receiver3 = {\n \"contact_name\": data.DeliveryReceiver3ContactName,\n \"contact_id\": data.DeliveryReceiver3ContactId,\n \"phone_nr\": data.DeliveryReceiver3ContactPhone,\n \"email\": data.DeliveryReceiver3ContactEmail,\n \"sms_notif\": data.DeliveryReceiver3ContactWantSms,\n \"email_notif\": data.DeliveryReceiver3ContactWantEmail\n };\n // Section 4 - Booking choice (bc)\n vm.order.bc.specified_address = data.DestinationAddress ? true : false;\n vm.order.bc.address = data.DestinationAddress;\n vm.order.bc.city = data.DestinationCity;\n vm.order.bc.zip_code = data.DestinationZipCode;\n vm.order.bc.arrival_time = $filter('toDateTime')(data.WishedDeliveryDate);\n vm.order.bc.vehicle_drop_location_name = data.VehicleDropLocationName;\n vm.order.bc.vehicle_drop_location_id = data.VehicleDropLocationId;\n vm.order.bc.destination_location_id = data.DestinationLocationId;\n vm.order.bc.staircase_location_id = data.StaircaseLocationId;\n vm.order.bc.staircase_location_name = data.StaircaseLocationName;\n vm.order.bc.comments = data.Comments;\n vm.order.bc.file_attachments = data.Files;\n vm.order.bc.is_unannounced_goods = !!data.IsUnannouncedGoods;\n vm.order.bc.is_unreachable = !!data.IsUnreachable;\n vm.order.bc.is_unused_resource = !!data.IsUnusedResource;\n // Section 5 - Shipping information\n vm.order.si.package_count = data.SpecifiedPackageCount;\n vm.order.si.package_weight = data.SpecifiedPackageWeight;\n vm.order.si.pallet_count = data.SpecifiedPalletCount;\n vm.order.si.pallet_weight = data.SpecifiedPalletWeight;\n vm.order.si.other_count = data.SpecifiedOtherCount;\n vm.order.si.other_weight = data.SpecifiedOtherWeight;\n vm.order.si.has_timing = data.HasAdditionalServiceTiming;\n if (vm.order.si.has_timing) {\n vm.order.si.timing = $filter(\"toDateTime\")(data.AdditionalServiceTimingDueDate);\n }\n vm.order.si.shipping_id = data.ShippingId;\n vm.order.si.shipping_name = data.ShippingName;\n vm.order.si.has_express = data.HasAdditionalServiceExpressDelivery;\n // Section 6 - Arrival contol\n vm.order.ar.is_return = data.IsReturn;\n // Section 7 - Booking reference (br)\n vm.order.br.registered = $filter('toDateTime')(data.Created);\n vm.order.br.status = $translate.instant(data.TaskStatusTypeAlias);\n vm.order.br.task_status = data.TaskStatus;\n vm.order.br.order_number = data.OrderNumber;\n\n // Packages\n vm.order.packages = [];\n for (var i = 0; i < data.Packages.length; i++) {\n vm.order.packages.push(packageFactory.repackageDTO(data.Packages[i]));\n }\n if (copy) {\n delete vm.order.order_id;\n delete vm.order.delivery_date;\n vm.order.br = {};\n vm.order.bc.file_attachments = [];\n vm.order.bc.file_attachments_to_add = [];\n vm.order.packages = [];\n vm.order.proj.order_number = '';\n }\n vm.evaluateProgress();\n getNextStatus();\n setPermissions();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n vm.setNextStatus = function () {\n if (vm.order.task_status !== vm.order.nextTaskStatus) {\n orderFactory.setNextStatus(order_id).then(function () {\n ngToast.success(\"Status ändrat.\");\n vm.order.br.status = vm.order.nextTaskStatusName;\n vm.order.br.task_status = vm.order.nextTaskStatus;\n vm.order.task_status = vm.order.nextTaskStatus;\n getNextStatus();\n }, function (error) {\n ngToast.danger(\"Det gick inte att ändra status.\");\n $log.error(error);\n });\n }\n };\n function getNextStatus() {\n orderFactory.getNextStatus(vm.order.order_type, vm.order.task_status).then(function (result) {\n vm.order.nextTaskStatus = result.data;\n vm.order.nextTaskStatusName = $translate.instant(generalHelperService.getKeyByValue(TaskStatusTypeEnum, vm.order.nextTaskStatus));\n });\n }\n vm.createOrder = function (addBookings) {\n validateForm();\n if (!vm.formValid || vm.lockCall) {\n return;\n }\n vm.lockCall = true;\n var orderDTO = orderMaterialFactory.createOrderDTO(vm.order, TaskStatusTypeEnum.NOTIFIED);\n orderFactory.createOrder(orderDTO, vm.order.bc.file_attachments_to_add, vm.formGuid).then(function (response) {\n var results = {\n success: true,\n copy: false\n };\n if (addBookings) {\n var parentOrderId = response.data;\n var resourceBookingResults = orderFormModalService.openCreateFromReference(OrderTypeEnum.RESOURCE_BOOKING, parentOrderId);\n results.success = resourceBookingResults.success;\n }\n vm.lockCall = false;\n $uibModalInstance.close(results);\n }, function (error) {\n vm.lockCall = false;\n if (error.status === 409) {\n ngToast.warning(\"Kunde inte spara formuläret, ordern finns redan.\");\n } else {\n ngToast.danger(\"Det gick inte att spara formuläret.\");\n }\n errorService.handleError(error);\n });\n };\n vm.updateOrder = function (printerId) {\n validateForm();\n if (!vm.formValid) {\n return;\n }\n var orderDTO = orderMaterialFactory.createOrderDTO(vm.order, \"\"),\n options = {\n fileAttachments: vm.order.bc.file_attachments_to_add\n };\n orderFactory.updateOrder(vm.orderDTO.OrderId, orderDTO, options).then(function () {\n if (printerId) {\n printShippingsNote(printerId);\n } else {\n $uibModalInstance.close({\n success: true,\n copy: false\n });\n }\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.confirmOrder = function () {\n validateForm();\n if (!vm.formValid) {\n return;\n }\n var orderDTO = orderMaterialFactory.createOrderDTO(vm.order, TaskStatusTypeEnum.CONFIRMED),\n options = {\n fileAttachments: vm.order.bc.file_attachments_to_add\n };\n orderFactory.confirmOrder(orderDTO.OrderId, orderDTO, options).then(function () {\n var results = {\n success: true,\n copy: false\n };\n $uibModalInstance.close(results);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n vm.copyOrder = function () {\n var results = {};\n results.success = true;\n results.copy = true;\n $uibModalInstance.close(results);\n };\n vm.cancelOrder = function () {\n var results = {};\n orderFactory.cancelOrder(vm.orderDTO.OrderId, vm.orderDTO).then(function () {\n results.success = true;\n results.copy = false;\n $uibModalInstance.close(results);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n\n // --- VALIDATION ---\n vm.handleValidationChange = function (source, value) {\n switch (source) {\n case \"section_project\":\n vm.isSectionProjectCompleted = value;\n break;\n case \"section_receivers\":\n vm.isSectionReceiversCompleted = value;\n break;\n case \"section_booking_choice\":\n vm.isSectionBookingChoiceCompleted = value;\n break;\n default:\n console.log(source + \" is not a valid source\");\n break;\n }\n vm.evaluateProgress();\n };\n vm.evaluateProgress = function () {\n // -- 1, 3 & 4: Validation is handled by component\n\n // -- 2\n vm.sectionTwoDone = vm.isOrderInProgress(vm.order.wb.articles);\n\n // -- 5\n\n if (vm.order.si.has_timing) {\n var evaluation = inputValidationService.isValidDateTime(vm.order.si.timing);\n vm.sectionFiveDone = evaluation;\n vm.timingSet = evaluation;\n } else vm.sectionFiveDone = true;\n\n // --\n\n if (!vm.isSectionProjectCompleted) {\n vm.sectionTwoDone = false;\n vm.sectionFiveDone = false;\n }\n if (!vm.sectionTwoDone) {\n vm.isSectionReceiversCompleted = false;\n vm.sectionFiveDone = false;\n }\n if (!vm.isSectionReceiversCompleted) {\n vm.sectionFiveDone = false;\n }\n if (!vm.isSectionBookingChoiceCompleted) {\n vm.sectionFiveDone = false;\n }\n };\n function checkAllSectionsDone() {\n if (vm.isSectionProjectCompleted && vm.sectionTwoDone && vm.isSectionReceiversCompleted && vm.isSectionBookingChoiceCompleted && vm.sectionFiveDone) {\n vm.formValid = true;\n } else vm.formValid = false;\n }\n function validateForm() {\n vm.validated = true;\n vm.evaluateProgress();\n checkAllSectionsDone();\n return vm.formValid;\n }\n vm.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n vm.isValidEmail = function (input) {\n return inputValidationService.isValidEmail(input);\n };\n vm.isConfirmedOrLater = function () {\n return taskStatusService.isConfirmedOrLater(vm.order.br.task_status);\n };\n vm.isOrderInProgress = function (articles) {\n var inProgress = false;\n angular.forEach(articles, function (article) {\n if (article.article_quantity > 0) {\n inProgress = true;\n }\n });\n return inProgress;\n };\n vm.totalWeight = function (articles) {\n var total = 0;\n if (!articles) return 0;\n for (var i = 0; i < articles.length; i++) {\n var article = articles[i];\n if (article.article_quantity && article.weight) {\n total += article.article_quantity * article.weight;\n } else if (article.article_quantity === undefined && article.original_article_quantity && article.weight) {\n // Handle that article_quantity is mangled by UI-binding if larger than availability\n total += article.original_article_quantity * article.weight;\n }\n }\n return total;\n };\n function hasSpecialPackageInformation() {\n return !!vm.order.si.package_count || !!vm.order.si.pallet_count || !!vm.order.si.other_count;\n }\n vm.isReadyForPrint = function () {\n return inputValidationService.isValidInput(vm.order.si.shipping_name) && (vm.order.si.print_notice || vm.order.si.print_label) && (vm.order.packages.length || hasSpecialPackageInformation());\n };\n function printShippingsNote(printerId) {\n orderFactory.printShippingsNote(order_id, printerId, vm.order.si.print_label, vm.order.si.print_notice).then(function () {}, function (error) {\n errorService.handleError(error);\n });\n }\n vm.deleteKeyFromObject = function (object, key) {\n if (object[key]) delete object[key];\n };\n vm.clearFinalDestination = function () {\n clearDestinations();\n clearChildNodes(0);\n vm.evaluateProgress();\n };\n vm.renotify = function () {\n orderFactory.renotifyOrderStatus(vm.orderDTO.OrderId);\n };\n vm.copyContactInfo = function () {\n vm.order.dr.receiver1 = {\n \"contact_id\": vm.order.dr.receiver1.contact_id,\n \"contact_name\": vm.order.proj.contact_person.contact_name,\n \"phone_nr\": vm.order.proj.contact_person.phone_nr,\n \"email\": vm.order.proj.contact_person.email,\n \"sms_notif\": vm.order.dr.receiver1.sms_notif,\n \"email_notif\": vm.order.dr.receiver1.email_notif\n };\n vm.order.proj.contact_person.sms_notif = false;\n vm.order.proj.contact_person.email_notif = false;\n vm.evaluateProgress();\n };\n\n // Watch for our custom `fileselect` event\n // FUTURE: This should be done using a directive instead\n vm.initFileSelectEvent = function () {\n $(':file').on('fileselect', function (event, numFiles, label) {\n var input = $('#fileSelectedText');\n log = numFiles > 1 ? numFiles + ' filer valda' : label;\n if (input) {\n input.val(log);\n } else {\n if (log) alert(log);\n }\n vm.evaluateProgress();\n });\n };\n vm.initDateTimeEvents = function () {\n // Init date time pickers\n $('#material-datetimepicker2').datetimepicker({\n format: 'YYYY-MM-DD HH:mm',\n locale: 'sv'\n });\n $('#material-datetimepicker2').data().DateTimePicker.stepping(15);\n\n // Date time picker events\n $('#material-datetimepicker2').on('dp.change', function () {\n vm.order.si.timing = $('#material-timing').val();\n vm.evaluateProgress();\n if (!$scope.$$phase) {\n //$digest or $apply\n $scope.$apply();\n }\n });\n };\n vm.openDropdown = dropdownService.openDropdown;\n $scope.$on('updatedUserData', function () {\n identifyRoles();\n });\n}]);\n'use strict';\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\nangular.module('serviplan').controller('ResourceBookingFormController', ['$uibModalInstance', 'form_type', 'order_id', 'copy', 'parentOrderId', '$scope', '$filter', 'orderFactory', 'workOrderFactory', 'locationFactory', '$translate', '$localStorage', 'packageFactory', 'errorService', 'roleService', 'inputValidationService', 'dropdownService', 'shippingFactory', 'orderResourceBookingFactory', 'printerFactory', 'taskStatusService', 'additionalServiceStatusService', 'generalHelperService', 'ngToast', '$log', '$q', 'ALLOWED_FILE_EXTENTIONS', function ($uibModalInstance, form_type, order_id, copy, parentOrderId, $scope, $filter, orderFactory, workOrderFactory, locationFactory, $translate, $localStorage, packageFactory, errorService, roleService, inputValidationService, dropdownService, shippingFactory, orderResourceBookingFactory, printerFactory, taskStatusService, additionalServiceStatusService, generalHelperService, ngToast, $log, $q, ALLOWED_FILE_EXTENTIONS) {\n var vm = this;\n vm.ALLOWED_FILE_EXTENTIONS = ALLOWED_FILE_EXTENTIONS;\n orderFactory.getGuid().then(function (response) {\n vm.formGuid = response.data;\n });\n initiateOrder();\n vm.sessionMainProject = $localStorage.user.session_main_project;\n vm.work_orders = [];\n vm.companies = [];\n vm.isSectionReceiversCompleted = false;\n vm.isSectionProjectCompleted = false;\n vm.isSectionBookingChoiceCompleted = false;\n vm.validated = false;\n vm.formValid = false;\n vm.hideWarnings = false;\n vm.order.order_type = OrderTypeEnum.RESOURCE_BOOKING;\n vm.form_type = form_type;\n vm.isCopy = copy;\n vm.isChildOrder = !!parentOrderId;\n vm.canEdit = false;\n vm.canCancel = false;\n vm.canConfirm = false;\n vm.canRaiseStatus = false;\n vm.canCopy = false;\n vm.canRenotify = false;\n vm.canUpload = false;\n function identifyRoles() {\n vm.isAdmin = roleService.isAdmin();\n vm.isInternal = roleService.isInternal();\n vm.isCustomer = roleService.isCustomer();\n }\n identifyRoles();\n if (vm.isCopy) {\n vm.form_type = 'create_order';\n }\n loadWorkOrders().then(function (response) {\n if (form_type === 'view_order' || form_type === 'manage_order' || vm.isChildOrder) {\n var orderToLoadId = vm.isChildOrder ? parentOrderId : order_id;\n loadOrder(orderToLoadId).then(function (response) {\n if (checkWorkOrderReferences()) {\n // Load work order data if we have access to it.\n vm.fillFormDataFromWorkOrder(vm.order.proj.work_order_id);\n } else {\n // User does not have permission to load work order data.\n // Hide warnings as user will not be able to edit the order.\n vm.hideWarnings = true;\n vm.loadDestinationLocationsForMainProject();\n }\n });\n } else if (form_type === 'create_order') {\n fillCompanyOptions(vm.work_orders);\n }\n });\n function checkWorkOrderReferences() {\n var hasReference = false;\n if (vm.work_orders) {\n angular.forEach(vm.work_orders, function (data) {\n if (vm.order.proj.work_order_id === data.work_order_id) {\n hasReference = true;\n }\n });\n }\n return hasReference;\n }\n var checkWorkOrderReferencesCallbacks = [];\n function subscribeToCheckWorkOrderReferencesChanges(callback) {\n checkWorkOrderReferencesCallbacks.push(callback);\n }\n function notifyCheckWorkOrdersReferencesChanged() {\n checkWorkOrderReferencesCallbacks.forEach(function (callback) {\n return callback();\n });\n }\n $scope.$watch('vm.work_orders', function () {\n notifyCheckWorkOrdersReferencesChanged();\n });\n $scope.$watch('vm.order.proj.work_order_id', function () {\n notifyCheckWorkOrdersReferencesChanged();\n });\n var taskStatusChangedCallbacks = [];\n function subscribeToTaskStatusChanges(callback) {\n taskStatusChangedCallbacks.push(callback);\n }\n function notifyTaskStatusChangesChanged() {\n taskStatusChangedCallbacks.forEach(function (callback) {\n return callback();\n });\n }\n $scope.$watch('vm.order.task_status', function () {\n notifyTaskStatusChangesChanged();\n });\n\n // Is editable if the orders WorkOrderId exists in the WorkOrderReferences.\n // WorkOrderReferences are the workorders which user are associated with. So when a user opens\n // an order in the list this is a way to check if the user can edit the form.\n function setCanEdit() {\n var canEdit = false;\n if (vm.form_type === 'create_order') {\n canEdit = true;\n }\n if (!canEdit && vm.isCustomer && taskStatusService.isNotified(vm.order.task_status)) {\n canEdit = checkWorkOrderReferences();\n }\n if (!canEdit && vm.isInternal && taskStatusService.isConfirmed(vm.order.task_status)) {\n canEdit = true;\n }\n if (!canEdit && vm.isAdmin && taskStatusService.isDelivered(vm.order.task_status)) {\n canEdit = true;\n }\n vm.canEdit = canEdit;\n }\n subscribeToCheckWorkOrderReferencesChanges(function () {\n return setCanEdit();\n });\n subscribeToTaskStatusChanges(function () {\n return setCanEdit();\n });\n function setCanCancel() {\n var canCancel = false;\n if (vm.form_type !== \"create_order\") {\n if (vm.isCustomer && taskStatusService.isNotified(vm.order.task_status)) {\n canCancel = checkWorkOrderReferences();\n }\n if (!canCancel && vm.isInternal && taskStatusService.isNotified(vm.order.task_status)) {\n canCancel = true;\n }\n if (!canCancel && vm.isInternal && taskStatusService.isConfirmed(vm.order.task_status)) {\n canCancel = true;\n }\n if (!canCancel && vm.isAdmin && !taskStatusService.isCancelled(vm.order.task_status)) {\n canCancel = true;\n }\n }\n vm.canCancel = canCancel;\n }\n subscribeToCheckWorkOrderReferencesChanges(function () {\n return setCanCancel();\n });\n subscribeToTaskStatusChanges(function () {\n return setCanCancel();\n });\n function setCanConfirm() {\n var canConfirm = false;\n if (vm.isInternal && taskStatusService.isNotified(vm.order.task_status)) {\n canConfirm = true;\n }\n vm.canConfirm = canConfirm;\n }\n subscribeToTaskStatusChanges(function () {\n return setCanConfirm();\n });\n function setCanRaiseStatus() {\n var canRaiseStatus = false;\n if (vm.isInternal && taskStatusService.isConfirmedOrLater(vm.order.task_status)) {\n canRaiseStatus = true;\n }\n vm.canRaiseStatus = canRaiseStatus;\n }\n subscribeToTaskStatusChanges(function () {\n return setCanRaiseStatus();\n });\n function setCanCopy() {\n var canCopy = false;\n if (vm.isCustomer && taskStatusService.isNotified(vm.order.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isNotified(vm.order.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isConfirmed(vm.order.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isConfirmed(vm.order.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isCancelled(vm.order.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isCancelled(vm.order.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isCompleted(vm.order.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isCompleted(vm.order.task_status)) {\n canCopy = true;\n }\n vm.canCopy = canCopy;\n }\n subscribeToCheckWorkOrderReferencesChanges(function () {\n return setCanCopy();\n });\n subscribeToTaskStatusChanges(function () {\n return setCanCopy();\n });\n function setCanRenotify() {\n var canRenotify = false;\n if (!canRenotify && vm.isInternal && taskStatusService.isConfirmed(vm.order.task_status)) {\n canRenotify = true;\n }\n vm.canRenotify = canRenotify;\n }\n subscribeToTaskStatusChanges(function () {\n return setCanRenotify();\n });\n function setCanUpload() {\n var canUpload = false;\n if (!taskStatusService.isCancelled(vm.order.task_status) && checkWorkOrderReferences() || vm.isAdmin) {\n canUpload = true;\n }\n vm.canUpload = canUpload;\n }\n subscribeToCheckWorkOrderReferencesChanges(function () {\n return setCanUpload();\n });\n subscribeToTaskStatusChanges(function () {\n return setCanUpload();\n });\n function loadWorkOrders() {\n if (!vm.sessionMainProject) return $q.reject();\n return workOrderFactory.getWorkOrders(vm.sessionMainProject.main_project_id, false).then(function (response) {\n vm.work_orders = workOrderFactory.repackageWorkOrderDTOArray(response.data);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n function fillCompanyOptions(workOrders) {\n vm.companies = workOrderFactory.extractUniqueCompaniesFromWorkOrders(workOrders);\n vm.order.proj.company_id = -1;\n if (!vm.companies || vm.companies.length === 0) {\n vm.order.proj.company_name = $translate.instant('NON_AVAILABLE') + '...';\n } else if (vm.companies.length === 1) {\n vm.order.proj.company_id = vm.companies[0].company_id;\n vm.order.proj.company_name = vm.companies[0].company_name;\n }\n }\n vm.loadDestinationLocationsForMainProject = function () {\n var mainProjectId = vm.sessionMainProject.main_project_id;\n locationFactory.getDestinationLocations(mainProjectId).then(function (response) {\n vm.destinationLocations = response.data;\n });\n };\n vm.fillFormDataFromWorkOrder = function (workOrderId) {\n orderFactory.getResourceBookingOrderBase(workOrderId).then(function (response) {\n var data = response.data;\n\n // Load from base if not from order\n if (form_type === 'create_order' && !vm.isChildOrder) {\n vm.order.proj.id_number = data.ErpSystemReference;\n vm.order.proj.contact_person = {\n \"contact_name\": data.OrderCreatorContactName,\n \"phone_nr\": data.OrderCreatorContactPhone,\n \"email\": data.OrderCreatorContactEmail,\n \"sms_notif\": data.OrderCreatorContactWantSms,\n \"email_notif\": data.OrderCreatorContactWantEmail\n };\n }\n vm.resourceLocations = data.ResourceLocations;\n vm.vehicleDropLocations = data.VehicleDropLocations;\n vm.destinationLocations = data.DestinationLocations;\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.onFormResetAction = function () {\n setDefaultOrderValues();\n };\n function initiateOrder() {\n vm.order = {};\n vm.order.proj = {};\n setDefaultOrderValues();\n }\n function setDefaultOrderValues() {\n vm.order.dr = {};\n vm.order.di = {};\n vm.order.bc = {};\n vm.order.br = {};\n vm.order.si = {};\n vm.order.ar = {};\n vm.order.packages = [];\n vm.validated = false;\n }\n function loadOrder(id) {\n var isLoadingReference = vm.isCopy || vm.isChildOrder;\n return orderFactory.getOrder(id).then(function (response) {\n var data = response.data;\n if (!isLoadingReference) {\n vm.orderDTO = data;\n vm.order.dto = data;\n vm.order.order_id = id;\n vm.order.task_status = data.TaskStatus;\n vm.order.delivery_date = data.DeliveryDate;\n vm.order.order_type = data.OrderType;\n }\n\n // Section Project (proj)\n vm.order.proj.id_number = data.ErpSystemReference;\n vm.order.proj.work_order_name = data.WorkOrderName;\n vm.order.proj.work_order_id = data.WorkOrderId;\n vm.order.proj.company_name = data.WorkOrderCompanyName;\n vm.order.proj.company_id = data.WorkOrderCompanyId;\n vm.order.proj.order_number = data.OrderNumber;\n vm.order.proj.contact_person = {\n \"contact_name\": data.OrderCreatorContactName,\n \"contact_id\": data.OrderCreatorContactId,\n \"phone_nr\": data.OrderCreatorContactPhone,\n \"email\": data.OrderCreatorContactEmail,\n \"sms_notif\": data.OrderCreatorContactWantSms,\n \"email_notif\": data.OrderCreatorContactWantEmail\n };\n // Section Receivers\n vm.order.dr.receiver1 = {\n \"contact_name\": data.DeliveryReceiver1ContactName,\n \"contact_id\": data.DeliveryReceiver1ContactId,\n \"phone_nr\": data.DeliveryReceiver1ContactPhone,\n \"email\": data.DeliveryReceiver1ContactEmail,\n \"sms_notif\": data.DeliveryReceiver1ContactWantSms,\n \"email_notif\": data.DeliveryReceiver1ContactWantEmail\n };\n vm.order.dr.receiver2 = {\n \"contact_name\": data.DeliveryReceiver2ContactName,\n \"contact_id\": data.DeliveryReceiver2ContactId,\n \"phone_nr\": data.DeliveryReceiver2ContactPhone,\n \"email\": data.DeliveryReceiver2ContactEmail,\n \"sms_notif\": data.DeliveryReceiver2ContactWantSms,\n \"email_notif\": data.DeliveryReceiver2ContactWantEmail\n };\n vm.order.dr.receiver3 = {\n \"contact_name\": data.DeliveryReceiver3ContactName,\n \"contact_id\": data.DeliveryReceiver3ContactId,\n \"phone_nr\": data.DeliveryReceiver3ContactPhone,\n \"email\": data.DeliveryReceiver3ContactEmail,\n \"sms_notif\": data.DeliveryReceiver3ContactWantSms,\n \"email_notif\": data.DeliveryReceiver3ContactWantEmail\n };\n\n // SectionBooking choice (bc)\n vm.order.bc.resource_bookings = isLoadingReference ? [] : orderFactory.repackageResourceBookingDTOArray(data.ResourceBookings);\n vm.order.bc.vehicle_drop_location_name = data.VehicleDropLocationName;\n vm.order.bc.vehicle_drop_location_id = data.VehicleDropLocationId;\n vm.order.bc.destination_location_id = data.DestinationLocationId;\n vm.order.bc.staircase_location_id = data.StaircaseLocationId;\n vm.order.bc.staircase_location_name = data.StaircaseLocationName;\n vm.order.bc.comments = data.Comments;\n vm.order.bc.file_attachments = isLoadingReference ? [] : $filter('filter')(data.Files, {\n OrderFileAttachmentTypeId: FileAttachmentTypeEnum.DOCUMENT\n }, true);\n\n // Section Booking reference (br)\n if (!isLoadingReference) {\n vm.order.br.registered = $filter('toDateTime')(data.Created);\n vm.order.br.status = $translate.instant(data.TaskStatusTypeAlias);\n vm.order.br.order_number = data.OrderNumber;\n vm.order.br.parent_order_id = data.ParentOrderId;\n vm.order.br.parent_order_number = data.ParentOrderNumber;\n getNextStatus();\n } else if (vm.isChildOrder) {\n vm.order.br.parent_order_id = data.OrderId;\n vm.order.br.parent_order_number = data.OrderNumber;\n }\n }, function (error) {\n errorService.handleError(error);\n });\n }\n vm.setNextStatus = function () {\n if (vm.order.task_status !== vm.order.nextTaskStatus) {\n orderFactory.setNextStatus(order_id).then(function () {\n ngToast.success(\"Status ändrat.\");\n vm.order.br.status = vm.order.nextTaskStatusName;\n vm.order.task_status = vm.order.nextTaskStatus;\n vm.order.task_status = vm.order.nextTaskStatus;\n getNextStatus();\n }, function (error) {\n ngToast.danger(\"Det gick inte att ändra status.\");\n $log.error(error);\n });\n }\n };\n function getNextStatus() {\n orderFactory.getNextStatus(vm.order.order_type, vm.order.task_status).then(function (result) {\n vm.order.nextTaskStatus = result.data;\n vm.order.nextTaskStatusName = $translate.instant(generalHelperService.getKeyByValue(TaskStatusTypeEnum, vm.order.nextTaskStatus));\n });\n }\n vm.createOrder = function () {\n vm.validateForm();\n if (!vm.formValid || vm.lockCall) {\n return;\n }\n vm.lockCall = true;\n var orderDTO = orderResourceBookingFactory.createOrderDTO(vm.order, TaskStatusTypeEnum.NOTIFIED);\n orderFactory.createOrder(orderDTO, vm.order.bc.file_attachments_to_add, vm.formGuid).then(function () {\n var results = {\n success: true,\n copy: false\n };\n vm.lockCall = false;\n $uibModalInstance.close(results);\n }, function (error) {\n vm.lockCall = false;\n if (error.status === 409) {\n ngToast.warning(\"Kunde inte spara formuläret, ordern finns redan.\");\n } else {\n ngToast.danger(\"Det gick inte att spara formuläret.\");\n }\n errorService.handleError(error);\n });\n };\n vm.updateOrder = function () {\n vm.validateForm();\n if (!vm.formValid) {\n return;\n }\n var orderDTO = orderResourceBookingFactory.createOrderDTO(vm.order, \"\");\n var options = {\n fileAttachments: vm.order.bc.file_attachments_to_add\n };\n orderFactory.updateOrder(vm.order.order_id, orderDTO, options).then(function () {\n var results = {\n success: true,\n copy: false\n };\n $uibModalInstance.close(results);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.confirmOrder = function () {\n vm.validateForm();\n if (!vm.formValid) {\n return;\n }\n var orderDTO = orderResourceBookingFactory.createOrderDTO(vm.order, TaskStatusTypeEnum.CONFIRMED);\n var options = {\n fileAttachments: vm.order.bc.file_attachments_to_add\n };\n orderFactory.confirmOrder(vm.orderDTO.OrderId, orderDTO, options).then(function () {\n var results = {};\n results.success = true;\n results.copy = false;\n $uibModalInstance.close(results);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n vm.copyOrder = function () {\n var results = {};\n results.success = true;\n results.copy = true;\n $uibModalInstance.close(results);\n };\n vm.cancelOrder = function () {\n var results = {};\n orderFactory.cancelOrder(vm.orderDTO.OrderId, vm.orderDTO).then(function () {\n results.success = true;\n results.copy = false;\n $uibModalInstance.close(results);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.renotify = function () {\n orderFactory.renotifyOrderStatus(vm.orderDTO.OrderId);\n };\n\n // --- VALIDATION ---\n vm.handleValidationChange = function (source, value) {\n switch (source) {\n case \"section_project\":\n vm.isSectionProjectCompleted = value;\n break;\n case \"section_receivers\":\n vm.isSectionReceiversCompleted = value;\n break;\n case \"section_booking_choice\":\n vm.isSectionBookingChoiceCompleted = value;\n break;\n default:\n console.log(source + \" is not a valid source\");\n break;\n }\n };\n function checkAllSectionsDone() {\n vm.formValid = vm.isSectionProjectCompleted && vm.isSectionReceiversCompleted && vm.isSectionBookingChoiceCompleted;\n return vm.formValid;\n }\n vm.validateForm = function () {\n checkAllSectionsDone();\n vm.validated = true;\n return vm.formValid;\n };\n\n // -- OTHER --\n\n vm.setFinalDestinationLocation = function (location) {\n vm.order.bc.destination_location_id = location.location_id;\n vm.order.bc.destination_location_name = location.location_name;\n };\n $scope.$on('updatedUserData', function () {\n identifyRoles();\n });\n}]);\n'use strict';\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\nangular.module('serviplan').controller('StoringFormController', ['$uibModalInstance', 'form_type', 'order_id', 'copy', '$scope', '$filter', 'orderFactory', 'workOrderFactory', '$translate', '$localStorage', 'errorService', 'roleService', 'dropdownService', 'orderStoringFactory', 'taskStatusService', 'additionalServiceStatusService', 'inputValidationService', 'generalHelperService', 'ngToast', 'packageFactory', '$log', 'ALLOWED_FILE_EXTENTIONS', function ($uibModalInstance, form_type, order_id, copy, $scope, $filter, orderFactory, workOrderFactory, $translate, $localStorage, errorService, roleService, dropdownService, orderStoringFactory, taskStatusService, additionalServiceStatusService, inputValidationService, generalHelperService, ngToast, packageFactory, $log, ALLOWED_FILE_EXTENTIONS) {\n var vm = this;\n vm.ALLOWED_FILE_EXTENTIONS = ALLOWED_FILE_EXTENTIONS;\n orderFactory.getGuid().then(function (responce) {\n vm.formGuid = responce.data;\n });\n initiateOrder();\n vm.sessionMainProject = $localStorage.user.session_main_project;\n vm.isSectionProjectCompleted = false;\n vm.isSectionDeliveryInformationCompleted = false;\n vm.isSectionBookingChoiceCompleted = false;\n vm.validated = false;\n vm.formValid = false;\n vm.arrivalSet = false;\n vm.order.ar.file_attachments = [];\n vm.order.order_type = OrderTypeEnum.STORING;\n vm.form_type = form_type;\n vm.canEdit = true;\n vm.canUpload = true;\n vm.hideWarnings = false;\n function identifyRoles() {\n vm.isAdmin = roleService.isAdmin();\n vm.isInternal = roleService.isInternal();\n vm.isCustomer = roleService.isCustomer();\n }\n identifyRoles();\n if (copy) {\n vm.form_type = 'create_order';\n }\n loadWorkOrders().then(function (response) {\n if (form_type === 'create_order') {\n fillCompanyOptions(vm.work_orders);\n } else if (form_type === 'view_order' || form_type === 'manage_order') {\n vm.workOrderReferences = vm.work_orders;\n loadOrder(order_id).then(function (response) {\n if (checkWorkOrderReferences()) {\n // Load work order data if we have access to it.\n vm.fillFormDataFromWorkOrder(vm.order.proj.work_order_id);\n } else {\n // User does not have permission to load work order data.\n // Hide warnings as user will not be able to edit the order.\n vm.hideWarnings = true;\n }\n });\n }\n });\n\n // Additional setup END ---\n\n function checkWorkOrderReferences() {\n var hasReference = false;\n if (vm.workOrderReferences) {\n angular.forEach(vm.workOrderReferences, function (data) {\n if (vm.order.proj.work_order_id === data.work_order_id) {\n hasReference = true;\n }\n });\n }\n return hasReference;\n }\n\n // Is editable if the orders WorkOrderId exists in the WorkOrderReferences.\n // WorkOrderReferences are the workorders which user are associated with. So when a user opens\n // an order in the list this is a way to check if the user can edit the form.\n function setCanEdit() {\n var canEdit = false;\n if (vm.form_type === 'create_order') {\n canEdit = true;\n }\n if (!canEdit && vm.isCustomer && taskStatusService.isNotified(vm.order.br.task_status)) {\n canEdit = checkWorkOrderReferences();\n }\n if (!canEdit && vm.isInternal && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canEdit = true;\n }\n if (!canEdit && vm.isInternal && taskStatusService.isArrived(vm.order.br.task_status)) {\n canEdit = true;\n }\n if (!canEdit && vm.isAdmin && taskStatusService.isStored(vm.order.br.task_status)) {\n canEdit = true;\n }\n vm.canEdit = canEdit;\n }\n function setCanCancel() {\n var canCancel = false;\n if (vm.form_type !== \"create_order\") {\n if (vm.isCustomer && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCancel = checkWorkOrderReferences();\n }\n if (!canCancel && vm.isInternal && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCancel = true;\n }\n if (!canCancel && vm.isInternal && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canCancel = true;\n }\n if (!canCancel && vm.isInternal && taskStatusService.isArrived(vm.order.br.task_status)) {\n canCancel = true;\n }\n if (!canCancel && vm.isAdmin && !taskStatusService.isCancelled(vm.order.br.task_status)) {\n canCancel = true;\n }\n }\n vm.canCancel = canCancel;\n }\n function setCanConfirm() {\n var canConfirm = false;\n if (vm.isInternal && taskStatusService.isNotified(vm.order.br.task_status)) {\n canConfirm = true;\n }\n vm.canConfirm = canConfirm;\n }\n function setCanRaiseStatus() {\n var canRaiseStatus = false;\n if (vm.isInternal && taskStatusService.isConfirmedOrLater(vm.order.br.task_status)) {\n canRaiseStatus = true;\n }\n vm.canRaiseStatus = canRaiseStatus;\n }\n function setCanCopy() {\n var canCopy = false;\n if (vm.isCustomer && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isArrived(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isArrived(vm.order.br.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isCancelled(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isCancelled(vm.order.br.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isStored(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isStored(vm.order.br.task_status)) {\n canCopy = true;\n }\n vm.canCopy = canCopy;\n }\n function setCanRenotify() {\n var canRenotify = false;\n if (vm.isInternal && taskStatusService.isConfirmedOrLater(vm.order.br.task_status) && !taskStatusService.isStored(vm.order.br.task_status)) {\n canRenotify = true;\n }\n vm.canRenotify = canRenotify;\n }\n function setCanUpload() {\n var canUpload = false;\n if (!taskStatusService.isCancelled(vm.order.br.task_status) && checkWorkOrderReferences() || vm.isAdmin) {\n canUpload = true;\n }\n vm.canUpload = canUpload;\n }\n function setPermissions() {\n setCanEdit();\n setCanCancel();\n setCanConfirm();\n setCanRaiseStatus();\n setCanCopy();\n setCanUpload();\n setCanRenotify();\n }\n function loadWorkOrders() {\n if (!vm.sessionMainProject) return $q.reject();\n return workOrderFactory.getWorkOrders(vm.sessionMainProject.main_project_id, false).then(function (response) {\n vm.work_orders = workOrderFactory.repackageWorkOrderDTOArray(response.data);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n function fillCompanyOptions(workOrders) {\n vm.companies = workOrderFactory.extractUniqueCompaniesFromWorkOrders(workOrders);\n vm.order.proj.company_id = -1;\n if (!vm.companies || vm.companies.length === 0) {\n vm.order.proj.company_name = $translate.instant('NON_AVAILABLE') + '...';\n } else if (vm.companies.length === 1) {\n vm.order.proj.company_id = vm.companies[0].company_id;\n vm.order.proj.company_name = vm.companies[0].company_name;\n }\n }\n vm.fillFormDataFromWorkOrder = function (workOrderId) {\n orderFactory.getStoringFormBase(workOrderId).then(\n //getOrderBy Work order\n function (response) {\n var data = response.data;\n\n // Load from base if not from order\n if (form_type === 'create_order') {\n vm.order.proj.id_number = data.ErpSystemReference;\n vm.order.proj.contact_person = {\n \"contact_name\": data.OrderCreatorContactName,\n \"phone_nr\": data.OrderCreatorContactPhone,\n \"email\": data.OrderCreatorContactEmail,\n \"sms_notif\": data.OrderCreatorContactWantSms,\n \"email_notif\": data.OrderCreatorContactWantEmail\n };\n }\n vm.order.di.vehicle_types = data.VehicleTypes;\n vm.evaluateProgress();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.onFormResetAction = function () {\n setDefaultOrderValues();\n vm.evaluateProgress();\n };\n function initiateOrder() {\n vm.order = {};\n vm.order.proj = {};\n setDefaultOrderValues();\n }\n function setDefaultOrderValues() {\n delete vm.orderDTO;\n vm.order.di = {};\n vm.order.bc = {};\n vm.order.br = {};\n vm.order.ar = {};\n vm.order.packages = [];\n vm.validated = false;\n }\n function loadOrder(id) {\n return orderFactory.getOrder(id).then(function (response) {\n var data = response.data;\n vm.orderDTO = data;\n vm.order.dto = data;\n vm.order.order_id = id;\n vm.order.task_status = data.TaskStatus;\n vm.order.order_type = data.OrderType;\n\n // Section 1 - Project (proj)\n vm.order.proj.id_number = data.ErpSystemReference;\n vm.order.proj.work_order_name = data.WorkOrderName;\n vm.order.proj.work_order_id = data.WorkOrderId;\n vm.order.proj.company_name = data.WorkOrderCompanyName;\n vm.order.proj.company_id = data.WorkOrderCompanyId;\n vm.order.proj.order_number = data.OrderNumber;\n vm.order.proj.contact_person = {\n \"contact_name\": data.OrderCreatorContactName,\n \"contact_id\": data.OrderCreatorContactId,\n \"phone_nr\": data.OrderCreatorContactPhone,\n \"email\": data.OrderCreatorContactEmail,\n \"sms_notif\": data.OrderCreatorContactWantSms,\n \"email_notif\": data.OrderCreatorContactWantEmail\n };\n // Section 3 - Delivery information (di)\n vm.order.di.supplier = data.Supplier;\n vm.order.di.vehicle_type_id = data.VehicleTypeId;\n vm.order.di.vehicle_type_name = data.VehicleTypeCode;\n vm.order.di.material = data.Content;\n vm.order.di.n_materials = data.Quantity;\n // Section 4 - Booking choice (bc)\n vm.order.bc.arrival_time = formatDate(data.Arrival);\n vm.order.bc.n_transports = data.NumTransports;\n vm.order.bc.ext_order_reference = data.ExternalOrderReference;\n vm.order.bc.comments = data.Comments;\n vm.order.bc.file_attachments = $filter('filter')(data.Files, {\n OrderFileAttachmentTypeId: FileAttachmentTypeEnum.DOCUMENT\n }, true);\n vm.order.bc.is_unannounced_goods = !!data.IsUnannouncedGoods;\n vm.order.bc.is_unreachable = !!data.IsUnreachable;\n vm.order.bc.is_unused_resource = !!data.IsUnusedResource;\n\n // Section 5 - Arrival registration\n vm.order.ar.has_inadequate_labeling = data.HasInadequateLabeling;\n vm.order.ar.other_reference = data.OtherReference;\n vm.order.ar.arrival_control_status_id = data.AdditionalServiceArrivalControlStatusTypeId;\n vm.order.ar.file_attachments = $filter('filter')(data.Files, {\n OrderFileAttachmentTypeId: FileAttachmentTypeEnum.ARRIVAL_CONTROL\n }, true);\n var arrivelControllCompleted = isAdditionalServiceCompleted(vm.order.ar.arrival_control_status_id);\n vm.lockArrivalControlled = arrivelControllCompleted; // Lock if controlled\n vm.order.ar.is_arrival_controlled = arrivelControllCompleted;\n\n // Section 6 - Booking reference (br)\n vm.order.br.registered = $filter('toDateTime')(data.Created);\n vm.order.br.status = $translate.instant(data.TaskStatusTypeAlias);\n vm.order.br.task_status = data.TaskStatus;\n vm.order.br.order_number = data.OrderNumber;\n\n // Packages\n vm.order.packages = [];\n for (var i = 0; i < data.Packages.length; i++) {\n vm.order.packages.push(packageFactory.repackageDTO(data.Packages[i]));\n }\n if (copy) {\n delete vm.order.order_id;\n vm.order.br = {};\n vm.order.ar.file_attachments = [];\n delete vm.order.ar.file_attachment_to_add;\n vm.order.bc.file_attachments = [];\n vm.order.bc.file_attachments_to_add = [];\n vm.order.packages = [];\n vm.order.proj.order_number = '';\n }\n vm.evaluateProgress();\n getNextStatus();\n setPermissions();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n vm.setNextStatus = function () {\n if (vm.order.task_status !== vm.order.nextTaskStatus) {\n orderFactory.setNextStatus(order_id).then(function () {\n ngToast.success(\"Status ändrat.\");\n vm.order.br.status = vm.order.nextTaskStatusName;\n vm.order.br.task_status = vm.order.nextTaskStatus;\n vm.order.task_status = vm.order.nextTaskStatus;\n getNextStatus();\n }, function (error) {\n ngToast.danger(\"Det gick inte att ändra status.\");\n $log.error(error);\n });\n }\n };\n function getNextStatus() {\n orderFactory.getNextStatus(vm.order.order_type, vm.order.task_status).then(function (result) {\n vm.order.nextTaskStatus = result.data;\n vm.order.nextTaskStatusName = $translate.instant(generalHelperService.getKeyByValue(TaskStatusTypeEnum, vm.order.nextTaskStatus));\n });\n }\n vm.isConfirmedOrLater = function () {\n return taskStatusService.isConfirmedOrLater(vm.order.br.task_status);\n };\n vm.renotify = function () {\n orderFactory.renotifyOrderStatus(vm.orderDTO.OrderId);\n };\n function formatDate(date) {\n var split = date.slice(0, -3).split('T');\n return split[0] + ' ' + split[1];\n }\n vm.send = function () {\n validateForm();\n if (!vm.formValid || vm.lockCall) {\n return;\n }\n vm.lockCall = true;\n var orderDTO = orderStoringFactory.createOrderDTO(vm.order, TaskStatusTypeEnum.NOTIFIED);\n orderFactory.createOrder(orderDTO, vm.order.bc.file_attachments_to_add, vm.formGuid).then(function () {\n var results = {\n success: true,\n copy: false\n };\n vm.lockCall = false;\n $uibModalInstance.close(results);\n }, function (error) {\n vm.lockCall = false;\n if (error.status === 409) {\n ngToast.warning(\"Kunde inte spara formuläret, ordern finns redan.\");\n } else {\n ngToast.danger(\"Det gick inte att spara formuläret.\");\n }\n errorService.handleError(error);\n });\n };\n vm.updateOrder = function () {\n validateForm();\n if (!vm.formValid) {\n return;\n }\n var orderDTO = orderStoringFactory.createOrderDTO(vm.order, vm.orderDTO.DestinationLocationId, vm.orderDTO.DestinationLocationName, \"\"),\n options = {\n fileAttachments: vm.order.bc.file_attachments_to_add\n };\n orderFactory.updateOrder(vm.order.order_id, orderDTO, options).then(function () {\n // The status of an additional service is not updated in mapping, since it typically set via SST and not in UI.\n // Setting arrival status to COMPLETE is an exception. Therefore a separate call to update status must be done.\n if (vm.order.ar.is_arrival_controlled) {\n orderFactory.updateAdditionalService(vm.orderDTO.OrderId, AdditionalServiceTypeEnum.ARRIVAL_CONTROL, AdditionalServiceStatusTypeEnum.COMPLETED);\n }\n var results = {\n success: true,\n copy: false\n };\n $uibModalInstance.close(results);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.confirmOrder = function () {\n validateForm();\n if (!vm.formValid) {\n return;\n }\n var orderDTO = orderStoringFactory.createOrderDTO(vm.order, TaskStatusTypeEnum.CONFIRMED),\n options = {\n fileAttachments: vm.order.bc.file_attachments_to_add\n };\n orderFactory.confirmOrder(vm.orderDTO.OrderId, orderDTO, options).then(function () {\n var results = {\n success: true,\n copy: false\n };\n $uibModalInstance.close(results);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n vm.copyOrder = function () {\n var results = {\n success: true,\n copy: true\n };\n $uibModalInstance.close(results);\n };\n vm.cancelOrder = function () {\n var results = {};\n orderFactory.cancelOrder(vm.orderDTO.OrderId, vm.orderDTO).then(function () {\n results.success = true;\n results.copy = false;\n $uibModalInstance.close(results);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n\n // --- VALIDATION ---\n vm.handleValidationChange = function (source, value) {\n switch (source) {\n case \"section_project\":\n vm.isSectionProjectCompleted = value;\n break;\n case \"section_delivery_information\":\n vm.isSectionDeliveryInformationCompleted = value;\n break;\n case \"section_booking_choice\":\n vm.isSectionBookingChoiceCompleted = value;\n break;\n default:\n console.log(source + \" is not a valid source\");\n break;\n }\n vm.evaluateProgress();\n };\n vm.evaluateProgress = function () {\n // -- 1-3: Validation is handled by component\n\n vm.sectionFourDone = vm.isSectionBookingChoiceCompleted; // Does not have any input that shall be validated\n };\n\n vm.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n vm.isValidEmail = function (input) {\n return inputValidationService.isValidEmail(input);\n };\n function isAdditionalServiceCompleted(statusTypeId) {\n return additionalServiceStatusService.isCompleted(statusTypeId);\n }\n function validateForm() {\n vm.validated = true;\n vm.evaluateProgress();\n checkAllSectionsDone();\n return vm.formValid;\n }\n function checkAllSectionsDone() {\n if (vm.isSectionProjectCompleted && vm.isSectionDeliveryInformationCompleted && vm.isSectionBookingChoiceCompleted && vm.sectionFourDone) {\n vm.formValid = true;\n } else vm.formValid = false;\n }\n\n // Watch for our custom `fileselect` event\n // FUTURE: This should be done using a directive instead\n vm.initFileSelectEvent = function (fileInputId, fileSelectedTextId) {\n $(fileInputId).on('fileselect', function (event, numFiles, label) {\n var input = $(fileSelectedTextId);\n log = numFiles > 1 ? numFiles + ' filer valda' : label;\n if (input) {\n input.val(log);\n } else {\n if (log) alert(log);\n }\n vm.evaluateProgress();\n });\n };\n vm.getFilePath = function (orderId, fileName) {\n return orderFactory.createFileLink(orderId, fileName);\n };\n vm.addArrivalControlFileToOrder = function () {\n var orderId = vm.order.order_id;\n var file = vm.order.ar.file_attachment_to_add;\n if (!file) return;\n orderFactory.saveFile(orderId, file, FileAttachmentTypeEnum.ARRIVAL_CONTROL).then(function (response) {\n var data = response.data;\n angular.forEach(data, function (file) {\n vm.order.ar.file_attachments.push(file);\n });\n delete vm.order.ar.file_attachment_to_add;\n $('#ar-fileattachment').val('');\n });\n };\n $scope.openDropdown = dropdownService.openDropdown;\n $scope.$on('updatedUserData', function () {\n identifyRoles();\n });\n}]);\n'use strict';\n\n// Please note that $uibModalInstance represents a modal window (instance) dependency.\n// It is not the same as the $uibModal service used above.\nangular.module('serviplan').controller('TransshipmentFormController', ['$uibModalInstance', 'form_type', 'order_id', 'copy', '$scope', '$filter', 'orderFactory', 'workOrderFactory', 'locationFactory', '$translate', '$localStorage', 'packageFactory', 'errorService', 'roleService', 'inputValidationService', 'dropdownService', 'shippingFactory', 'orderTransshipmentFactory', 'printerFactory', 'taskStatusService', 'additionalServiceStatusService', 'generalHelperService', 'orderFormModalService', 'ngToast', '$log', '$q', 'ALLOWED_FILE_EXTENTIONS', function ($uibModalInstance, form_type, order_id, copy, $scope, $filter, orderFactory, workOrderFactory, locationFactory, $translate, $localStorage, packageFactory, errorService, roleService, inputValidationService, dropdownService, shippingFactory, orderTransshipmentFactory, printerFactory, taskStatusService, additionalServiceStatusService, generalHelperService, orderFormModalService, ngToast, $log, $q, ALLOWED_FILE_EXTENTIONS) {\n var vm = this;\n vm.ALLOWED_FILE_EXTENTIONS = ALLOWED_FILE_EXTENTIONS;\n orderFactory.getGuid().then(function (responce) {\n vm.formGuid = responce.data;\n });\n initiateOrder();\n vm.sessionMainProject = $localStorage.user.session_main_project;\n vm.work_orders = [];\n vm.companies = [];\n vm.isSectionReceiversCompleted = false;\n vm.isSectionProjectCompleted = false;\n vm.isSectionDeliveryInformationCompleted = false;\n vm.isSectionBookingChoiceCompleted = false;\n vm.sectionFiveDone = false;\n vm.sectionSixDone = false;\n vm.validated = false;\n vm.formValid = false;\n vm.order.ar.file_attachments = [];\n vm.order.order_type = OrderTypeEnum.TRANSSHIPMENT;\n vm.form_type = form_type;\n vm.canEdit = true;\n vm.canUpload = true;\n function identifyRoles() {\n vm.isAdmin = roleService.isAdmin();\n vm.isInternal = roleService.isInternal();\n vm.isCustomer = roleService.isCustomer();\n }\n identifyRoles();\n if (copy) {\n vm.form_type = 'create_order';\n }\n vm.hideWarnings = false;\n loadWorkOrders().then(function (response) {\n if (form_type === 'create_order') {\n fillCompanyOptions(vm.work_orders);\n } else if (form_type === 'view_order' || form_type === 'manage_order') {\n vm.workOrderReferences = vm.work_orders;\n loadOrder(order_id).then(function (response) {\n if (checkWorkOrderReferences()) {\n // Load work order data if we have access to it.\n vm.fillFormDataFromWorkOrder(vm.order.proj.work_order_id);\n } else {\n // User does not have permission to load work order data.\n // Hide warnings as user will not be able to edit the order.\n vm.hideWarnings = true;\n vm.loadDestinationLocationsForMainProject();\n vm.evaluateProgress();\n }\n });\n }\n });\n function checkWorkOrderReferences() {\n var hasReference = false;\n if (vm.workOrderReferences) {\n angular.forEach(vm.workOrderReferences, function (data) {\n if (vm.order.proj.work_order_id === data.work_order_id) {\n hasReference = true;\n }\n });\n }\n return hasReference;\n }\n\n // Is editable if the orders WorkOrderId exists in the WorkOrderReferences.\n // WorkOrderReferences are the workorders which user are associated with. So when a user opens\n // an order in the list this is a way to check if the user can edit the form.\n function setCanEdit() {\n var canEdit = false;\n if (vm.form_type === 'create_order') {\n canEdit = true;\n }\n if (!canEdit && vm.isCustomer && taskStatusService.isNotified(vm.order.br.task_status)) {\n canEdit = checkWorkOrderReferences();\n }\n if (!canEdit && vm.isInternal && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canEdit = true;\n }\n if (!canEdit && vm.isInternal && taskStatusService.isArrived(vm.order.br.task_status)) {\n canEdit = true;\n }\n if (!canEdit && vm.isInternal && (taskStatusService.isAssignedToTransport(vm.order.br.task_status) || taskStatusService.isAssignedToRoute(vm.order.br.task_status))) {\n canEdit = true;\n }\n if (!canEdit && vm.isAdmin && taskStatusService.isDelivered(vm.order.br.task_status)) {\n canEdit = true;\n }\n vm.canEdit = canEdit;\n }\n function setCanCancel() {\n var canCancel = false;\n if (vm.form_type !== \"create_order\") {\n if (vm.isCustomer && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCancel = checkWorkOrderReferences();\n }\n if (!canCancel && vm.isInternal && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCancel = true;\n }\n if (!canCancel && vm.isInternal && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canCancel = true;\n }\n if (!canCancel && vm.isInternal && taskStatusService.isArrived(vm.order.br.task_status) && !vm.order.delivery_date && !vm.order.packages.length) {\n canCancel = true;\n }\n if (!canCancel && vm.isAdmin && !taskStatusService.isCancelled(vm.order.br.task_status)) {\n canCancel = true;\n }\n }\n vm.canCancel = canCancel;\n }\n function setCanConfirm() {\n var canConfirm = false;\n if (vm.isInternal && taskStatusService.isNotified(vm.order.br.task_status)) {\n canConfirm = true;\n }\n vm.canConfirm = canConfirm;\n }\n function setCanRaiseStatus() {\n var canRaiseStatus = false;\n if (!canRaiseStatus && vm.isInternal && taskStatusService.isConfirmedOrLater(vm.order.br.task_status)) {\n canRaiseStatus = true;\n }\n vm.canRaiseStatus = canRaiseStatus;\n }\n function setCanCopy() {\n var canCopy = false;\n if (vm.isCustomer && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isNotified(vm.order.br.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isArrived(vm.order.br.task_status)) {\n //--\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isArrived(vm.order.br.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && (taskStatusService.isAssignedToTransport(vm.order.br.task_status) || taskStatusService.isAssignedToRoute(vm.order.br.task_status))) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && (taskStatusService.isAssignedToTransport(vm.order.br.task_status) || taskStatusService.isAssignedToRoute(vm.order.br.task_status))) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isCancelled(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isCancelled(vm.order.br.task_status)) {\n canCopy = true;\n }\n if (!canCopy && vm.isCustomer && taskStatusService.isDelivered(vm.order.br.task_status)) {\n canCopy = checkWorkOrderReferences();\n }\n if (!canCopy && vm.isInternal && taskStatusService.isDelivered(vm.order.br.task_status)) {\n canCopy = true;\n }\n vm.canCopy = canCopy;\n }\n function setCanPrint() {\n var canPrint = false;\n if (vm.isInternal && taskStatusService.isConfirmed(vm.order.br.task_status)) {\n canPrint = true;\n }\n if (!canPrint && vm.isInternal && taskStatusService.isArrived(vm.order.br.task_status)) {\n canPrint = true;\n }\n if (!canPrint && vm.isInternal && (taskStatusService.isAssignedToTransport(vm.order.br.task_status) || taskStatusService.isAssignedToRoute(vm.order.br.task_status))) {\n canPrint = true;\n }\n if (!canPrint && vm.isInternal && taskStatusService.isDelivered(vm.order.br.task_status)) {\n canPrint = true;\n }\n vm.canPrint = canPrint;\n }\n function setCanRenotify() {\n var canRenotify = false;\n if (vm.isInternal && taskStatusService.isConfirmedOrLater(vm.order.br.task_status) && !taskStatusService.isDelivered(vm.order.br.task_status)) {\n canRenotify = true;\n }\n vm.canRenotify = canRenotify;\n }\n function setCanUpload() {\n var canUpload = false;\n if (!taskStatusService.isCancelled(vm.order.br.task_status) && checkWorkOrderReferences() || vm.isAdmin) {\n canUpload = true;\n }\n vm.canUpload = canUpload;\n }\n function setPermissions() {\n setCanEdit();\n setCanCancel();\n setCanConfirm();\n setCanRaiseStatus();\n setCanCopy();\n setCanPrint();\n setCanUpload();\n setCanRenotify();\n }\n function loadWorkOrders() {\n if (!vm.sessionMainProject) return $q.reject();\n return workOrderFactory.getWorkOrders(vm.sessionMainProject.main_project_id, false).then(function (response) {\n vm.work_orders = workOrderFactory.repackageWorkOrderDTOArray(response.data);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n function fillCompanyOptions(workOrders) {\n vm.companies = workOrderFactory.extractUniqueCompaniesFromWorkOrders(workOrders);\n vm.order.proj.company_id = -1;\n if (!vm.companies || vm.companies.length === 0) {\n vm.order.proj.company_name = $translate.instant('NON_AVAILABLE') + '...';\n } else if (vm.companies.length === 1) {\n vm.order.proj.company_id = vm.companies[0].company_id;\n vm.order.proj.company_name = vm.companies[0].company_name;\n }\n }\n function loadShippings() {\n if (!vm.sessionMainProject || !vm.isInternal) {\n vm.shippings = [];\n return;\n }\n shippingFactory.getShippingsByMainProjectId(false, vm.sessionMainProject.main_project_id).then(function (response) {\n var data = response.data;\n vm.shippings = shippingFactory.repackageDTOArray(data);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n loadShippings();\n function loadPrinters() {\n if (!vm.sessionMainProject || !vm.isInternal) {\n vm.printers = [];\n return;\n }\n printerFactory.getPrintersByMainProjectId(vm.sessionMainProject.main_project_id).then(function (response) {\n var data = response.data;\n vm.printers = printerFactory.repackageDTOArray(data);\n }, function (error) {\n errorService.handleError(error);\n });\n }\n loadPrinters();\n vm.loadDestinationLocationsForMainProject = function () {\n var mainProjectId = vm.sessionMainProject.main_project_id;\n locationFactory.getDestinationLocations(mainProjectId).then(function (response) {\n vm.destinationLocations = response.data;\n });\n };\n vm.fillFormDataFromWorkOrder = function (workOrderId) {\n orderFactory.getTransshipmentFormBase(workOrderId).then(function (response) {\n var data = response.data;\n\n // Load from base if not from order\n if (form_type === 'create_order') {\n vm.order.proj.id_number = data.ErpSystemReference;\n vm.order.proj.contact_person = {\n \"contact_name\": data.OrderCreatorContactName,\n \"phone_nr\": data.OrderCreatorContactPhone,\n \"email\": data.OrderCreatorContactEmail,\n \"sms_notif\": data.OrderCreatorContactWantSms,\n \"email_notif\": data.OrderCreatorContactWantEmail\n };\n }\n vm.vehicleDropLocations = data.VehicleDropLocations;\n vm.destinationLocations = data.DestinationLocations;\n vm.evaluateProgress();\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.onFormResetAction = function () {\n setDefaultOrderValues();\n vm.evaluateProgress();\n };\n function initiateOrder() {\n vm.order = {};\n vm.order.proj = {};\n setDefaultOrderValues();\n }\n function setDefaultOrderValues() {\n vm.order.dr = {};\n vm.order.di = {};\n vm.order.bc = {};\n vm.order.br = {};\n vm.order.si = {};\n vm.order.ar = {};\n vm.order.packages = [];\n vm.validated = false;\n }\n function loadOrder(id) {\n return orderFactory.getOrder(id).then(function (response) {\n var data = response.data;\n vm.orderDTO = data;\n vm.order.dto = data;\n vm.order.order_id = id;\n vm.order.task_status = data.TaskStatus;\n vm.order.delivery_date = data.DeliveryDate;\n vm.order.order_type = data.OrderType;\n\n // Section 1 - Project (proj)\n vm.order.proj.id_number = data.ErpSystemReference;\n vm.order.proj.work_order_name = data.WorkOrderName;\n vm.order.proj.work_order_id = data.WorkOrderId;\n vm.order.proj.company_name = data.WorkOrderCompanyName;\n vm.order.proj.company_id = data.WorkOrderCompanyId;\n vm.order.proj.order_number = data.OrderNumber;\n vm.order.proj.contact_person = {\n \"contact_name\": data.OrderCreatorContactName,\n \"contact_id\": data.OrderCreatorContactId,\n \"phone_nr\": data.OrderCreatorContactPhone,\n \"email\": data.OrderCreatorContactEmail,\n \"sms_notif\": data.OrderCreatorContactWantSms,\n \"email_notif\": data.OrderCreatorContactWantEmail\n };\n // Section 2 - Receivers\n vm.order.dr.receiver1 = {\n \"contact_name\": data.DeliveryReceiver1ContactName,\n \"contact_id\": data.DeliveryReceiver1ContactId,\n \"phone_nr\": data.DeliveryReceiver1ContactPhone,\n \"email\": data.DeliveryReceiver1ContactEmail,\n \"sms_notif\": data.DeliveryReceiver1ContactWantSms,\n \"email_notif\": data.DeliveryReceiver1ContactWantEmail\n };\n vm.order.dr.receiver2 = {\n \"contact_name\": data.DeliveryReceiver2ContactName,\n \"contact_id\": data.DeliveryReceiver2ContactId,\n \"phone_nr\": data.DeliveryReceiver2ContactPhone,\n \"email\": data.DeliveryReceiver2ContactEmail,\n \"sms_notif\": data.DeliveryReceiver2ContactWantSms,\n \"email_notif\": data.DeliveryReceiver2ContactWantEmail\n };\n vm.order.dr.receiver3 = {\n \"contact_name\": data.DeliveryReceiver3ContactName,\n \"contact_id\": data.DeliveryReceiver3ContactId,\n \"phone_nr\": data.DeliveryReceiver3ContactPhone,\n \"email\": data.DeliveryReceiver3ContactEmail,\n \"sms_notif\": data.DeliveryReceiver3ContactWantSms,\n \"email_notif\": data.DeliveryReceiver3ContactWantEmail\n };\n\n // Section 3 - Delivery information (di)\n vm.order.di.supplier = data.Supplier;\n vm.order.di.material = data.Content;\n vm.order.di.n_materials = data.Quantity;\n // Section 4 - Booking choice (bc)\n vm.order.bc.arrival_time = formatDate(data.ArrivalAtWarehouse);\n vm.order.bc.vehicle_drop_location_name = data.VehicleDropLocationName;\n vm.order.bc.vehicle_drop_location_id = data.VehicleDropLocationId;\n vm.order.bc.destination_location_id = data.DestinationLocationId;\n vm.order.bc.staircase_location_id = data.StaircaseLocationId;\n vm.order.bc.staircase_location_name = data.StaircaseLocationName;\n vm.order.bc.arrival_control_status_id = data.AdditionalServiceArrivalControlStatusTypeId;\n var arrivelControllCompleted = isAdditionalServiceCompleted(vm.order.bc.arrival_control_status_id);\n vm.lockArrivalControlled = arrivelControllCompleted; // Lock if controlled\n vm.order.ar.is_arrival_controlled = arrivelControllCompleted; // Set true if controlled\n\n vm.order.bc.comments = data.Comments;\n vm.order.bc.file_attachments = $filter('filter')(data.Files, {\n OrderFileAttachmentTypeId: FileAttachmentTypeEnum.DOCUMENT\n }, true);\n vm.order.bc.is_unannounced_goods = !!data.IsUnannouncedGoods;\n vm.order.bc.is_unreachable = !!data.IsUnreachable;\n vm.order.bc.is_unused_resource = !!data.IsUnusedResource;\n\n // Section 5 - Arrival registration\n vm.order.ar.has_inadequate_labeling = data.HasInadequateLabeling;\n vm.order.ar.is_return = data.IsReturn;\n vm.order.ar.other_reference = data.OtherReference;\n vm.order.ar.file_attachments = $filter('filter')(data.Files, {\n OrderFileAttachmentTypeId: FileAttachmentTypeEnum.ARRIVAL_CONTROL\n }, true);\n // Section 6 - Shipping information\n vm.order.si.package_count = data.SpecifiedPackageCount;\n vm.order.si.package_weight = data.SpecifiedPackageWeight;\n vm.order.si.pallet_count = data.SpecifiedPalletCount;\n vm.order.si.pallet_weight = data.SpecifiedPalletWeight;\n vm.order.si.other_count = data.SpecifiedOtherCount;\n vm.order.si.other_weight = data.SpecifiedOtherWeight;\n vm.order.si.has_timing = data.HasAdditionalServiceTiming;\n if (vm.order.si.has_timing) {\n vm.order.si.timing = $filter(\"toDateTime\")(data.AdditionalServiceTimingDueDate);\n }\n vm.order.si.shipping_id = data.ShippingId;\n vm.order.si.shipping_name = data.ShippingName;\n vm.order.si.has_express = data.HasAdditionalServiceExpressDelivery;\n // Section 7 - Booking reference (br)\n vm.order.br.registered = $filter('toDateTime')(data.Created);\n vm.order.br.status = $translate.instant(data.TaskStatusTypeAlias);\n vm.order.br.task_status = data.TaskStatus;\n vm.order.br.order_number = data.OrderNumber;\n // Packages\n vm.order.packages = [];\n for (var i = 0; i < data.Packages.length; i++) {\n vm.order.packages.push(packageFactory.repackageDTO(data.Packages[i]));\n }\n if (copy) {\n delete vm.order.order_id;\n delete vm.order.delivery_date;\n vm.order.br = {};\n vm.order.ar.file_attachments = [];\n delete vm.order.ar.file_attachment_to_add;\n vm.order.bc.file_attachments = [];\n vm.order.bc.file_attachments_to_add = [];\n vm.order.packages = [];\n vm.order.proj.order_number = '';\n }\n vm.evaluateProgress();\n getNextStatus();\n setPermissions();\n }, function (error) {\n errorService.handleError(error);\n });\n }\n vm.setNextStatus = function () {\n if (vm.order.task_status !== vm.order.nextTaskStatus) {\n orderFactory.setNextStatus(order_id).then(function () {\n ngToast.success(\"Status ändrat.\");\n vm.order.br.status = vm.order.nextTaskStatusName;\n vm.order.br.task_status = vm.order.nextTaskStatus;\n vm.order.task_status = vm.order.nextTaskStatus;\n getNextStatus();\n }, function (error) {\n ngToast.danger(\"Det gick inte att ändra status.\");\n $log.error(error);\n });\n }\n };\n function getNextStatus() {\n orderFactory.getNextStatus(vm.order.order_type, vm.order.task_status).then(function (result) {\n vm.order.nextTaskStatus = result.data;\n vm.order.nextTaskStatusName = $translate.instant(generalHelperService.getKeyByValue(TaskStatusTypeEnum, vm.order.nextTaskStatus));\n });\n }\n function formatDate(date) {\n var split = date.slice(0, -3).split('T');\n return split[0] + ' ' + split[1];\n }\n vm.createOrder = function (addBookings) {\n vm.validateForm();\n if (!vm.formValid || vm.lockCall) {\n return;\n }\n vm.lockCall = true;\n var orderDTO = orderTransshipmentFactory.createOrderDTO(vm.order, TaskStatusTypeEnum.NOTIFIED);\n orderFactory.createOrder(orderDTO, vm.order.bc.file_attachments_to_add, vm.formGuid).then(function (response) {\n var results = {\n success: true,\n copy: false\n };\n if (addBookings) {\n var parentOrderId = response.data;\n var resourceBookingResults = orderFormModalService.openCreateFromReference(OrderTypeEnum.RESOURCE_BOOKING, parentOrderId);\n results.success = resourceBookingResults.success;\n }\n vm.lockCall = false;\n $uibModalInstance.close(results);\n }, function (error) {\n vm.lockCall = false;\n if (error.status === 409) {\n ngToast.warning(\"Kunde inte spara formuläret, ordern finns redan.\");\n } else {\n ngToast.danger(\"Det gick inte att spara formuläret.\");\n }\n errorService.handleError(error);\n });\n };\n vm.updateOrder = function (printerId) {\n vm.validateForm();\n if (!vm.formValid) {\n return;\n }\n var orderDTO = orderTransshipmentFactory.createOrderDTO(vm.order, \"\"),\n options = {\n fileAttachments: vm.order.bc.file_attachments_to_add\n };\n orderFactory.updateOrder(vm.orderDTO.OrderId, orderDTO, options).then(function () {\n // The status of an additional service is not updated in mapping, since it typically set via SST and not in UI.\n // Setting arrival status to COMPLETE is an exception. Therefore a separate call to update status must be done.\n if (vm.order.ar.is_arrival_controlled) {\n orderFactory.updateAdditionalService(vm.orderDTO.OrderId, AdditionalServiceTypeEnum.ARRIVAL_CONTROL, AdditionalServiceStatusTypeEnum.COMPLETED);\n }\n if (printerId) {\n printShippingsNote(printerId);\n } else {\n $uibModalInstance.close({\n success: true,\n copy: false\n });\n }\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.confirmOrder = function () {\n vm.validateForm();\n if (!vm.formValid) {\n return;\n }\n var orderDTO = orderTransshipmentFactory.createOrderDTO(vm.order, TaskStatusTypeEnum.CONFIRMED),\n options = {\n fileAttachments: vm.order.bc.file_attachments_to_add\n };\n orderFactory.confirmOrder(vm.orderDTO.OrderId, orderDTO, options).then(function () {\n var results = {};\n results.success = true;\n results.copy = false;\n $uibModalInstance.close(results);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n vm.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n vm.copyOrder = function () {\n var results = {};\n results.success = true;\n results.copy = true;\n $uibModalInstance.close(results);\n };\n vm.cancelOrder = function () {\n var results = {};\n orderFactory.cancelOrder(vm.orderDTO.OrderId, vm.orderDTO).then(function () {\n results.success = true;\n results.copy = false;\n $uibModalInstance.close(results);\n }, function (error) {\n errorService.handleError(error);\n });\n };\n\n // --- VALIDATION ---\n vm.handleValidationChange = function (source, value) {\n switch (source) {\n case \"section_project\":\n vm.isSectionProjectCompleted = value;\n break;\n case \"section_receivers\":\n vm.isSectionReceiversCompleted = value;\n break;\n case \"section_delivery_information\":\n vm.isSectionDeliveryInformationCompleted = value;\n break;\n case \"section_booking_choice\":\n vm.isSectionBookingChoiceCompleted = value;\n break;\n default:\n console.log(source + \" is not a valid source\");\n break;\n }\n vm.evaluateProgress();\n };\n vm.evaluateProgress = function () {\n // -- 1-4: Validation is handled by component\n\n // -- 5\n vm.sectionFiveDone = vm.isSectionBookingChoiceCompleted;\n\n // -- 6\n\n if (vm.order.si.has_timing) {\n var evaluation = inputValidationService.isValidDateTime(vm.order.si.timing);\n vm.sectionSixDone = evaluation;\n vm.timingSet = evaluation;\n } else vm.sectionSixDone = true;\n\n // --\n\n if (!vm.isSectionProjectCompleted) {\n vm.sectionFiveDone = false;\n vm.sectionSixDone = false;\n }\n if (!vm.isSectionReceiversCompleted) {\n vm.sectionFiveDone = false;\n vm.sectionSixDone = false;\n }\n if (!vm.isSectionDeliveryInformationCompleted) {\n vm.sectionFiveDone = false;\n vm.sectionSixDone = false;\n }\n if (!vm.isSectionBookingChoiceCompleted) {\n vm.sectionFiveDone = false;\n vm.sectionSixDone = false;\n }\n if (!vm.sectionFiveDone) {\n vm.sectionSixDone = false;\n }\n };\n function checkAllSectionsDone() {\n if (vm.isSectionProjectCompleted && vm.isSectionReceiversCompleted && vm.isSectionDeliveryInformationCompleted && vm.isSectionBookingChoiceCompleted && vm.sectionFiveDone && vm.sectionSixDone) {\n vm.formValid = true;\n } else vm.formValid = false;\n }\n vm.validateForm = function () {\n vm.validated = true;\n vm.evaluateProgress();\n checkAllSectionsDone();\n return vm.formValid;\n };\n vm.isValidInput = function (input) {\n return inputValidationService.isValidInput(input);\n };\n vm.isValidEmail = function (input) {\n return inputValidationService.isValidEmail(input);\n };\n function isAdditionalServiceCompleted(statusTypeId) {\n return additionalServiceStatusService.isCompleted(statusTypeId);\n }\n ;\n vm.isConfirmedOrLater = function () {\n return taskStatusService.isConfirmedOrLater(vm.order.br.task_status);\n };\n vm.renotify = function () {\n orderFactory.renotifyOrderStatus(vm.orderDTO.OrderId);\n };\n\n // -- OTHER --\n function hasSpecialPackageInformation() {\n return !!vm.order.si.package_count || !!vm.order.si.pallet_count || !!vm.order.si.other_count;\n }\n vm.isReadyForPrint = function () {\n return inputValidationService.isValidInput(vm.order.si.shipping_name) && (vm.order.si.print_notice || vm.order.si.print_label) && (vm.order.packages.length || hasSpecialPackageInformation());\n };\n function printShippingsNote(printerId) {\n orderFactory.printShippingsNote(order_id, printerId, vm.order.si.print_label, vm.order.si.print_notice).then(function () {}, function (error) {\n errorService.handleError(error);\n });\n }\n vm.deleteKeyFromObject = function (object, key) {\n if (object[key]) delete object[key];\n };\n vm.getFilePath = function (orderId, fileName) {\n return orderFactory.createFileLink(orderId, fileName);\n };\n vm.addArrivalControlFileToOrder = function () {\n var orderId = vm.order.order_id;\n var file = vm.order.ar.file_attachment_to_add;\n if (!file) return;\n orderFactory.saveFile(orderId, file, FileAttachmentTypeEnum.ARRIVAL_CONTROL).then(function (response) {\n var data = response.data;\n angular.forEach(data, function (file) {\n vm.order.ar.file_attachments.push(file);\n });\n delete vm.order.ar.file_attachment_to_add;\n $('#ar-fileattachment').val('');\n });\n };\n vm.openDropdown = dropdownService.openDropdown;\n\n // --- EVENTS --\n\n // Watch for our custom `fileselect` event\n // FUTURE: This should be done using a directive instead\n vm.initFileSelectEvent = function (fileInputId, fileSelectedTextId) {\n $(fileInputId).on('fileselect', function (event, numFiles, label) {\n var input = $(fileSelectedTextId);\n log = numFiles > 1 ? numFiles + ' filer valda' : label;\n if (input) {\n input.val(log);\n } else {\n if (log) alert(log);\n }\n vm.evaluateProgress();\n });\n };\n vm.initDateTimeEvents = function () {\n // #transshipment-datetimepicker2 is not in the DOM for external Users\n if (vm.isInternal) {\n $('#transshipment-datetimepicker2').datetimepicker({\n format: 'YYYY-MM-DD HH:mm',\n locale: 'sv'\n });\n $('#transshipment-datetimepicker2').data().DateTimePicker.stepping(15);\n $('#transshipment-datetimepicker2').on('dp.change', function () {\n vm.order.si.timing = $('#transshipment-timing').val();\n vm.evaluateProgress();\n if (!$scope.$$phase) {\n //$digest or $apply\n $scope.$apply();\n }\n });\n }\n };\n $scope.$on('updatedUserData', function () {\n identifyRoles();\n });\n}]);\n//# sourceMappingURL=../../sourcemaps/assets/js/bundle.js.map\n"]}