Exemplo n.º 1
0
        /// <summary>
        /// Maps the crew.
        /// </summary>
        /// <param name="staterooms">The staterooms.</param>
        /// <param name="shipDateTime">The ship date time.</param>
        /// <param name="safetyRoleList">The safety role list.</param>
        /// <param name="collection">The collection.</param>
        /// <param name="crew">The crew.</param>
        private static void MapCrew(IEnumerable<DataAccess.Entities.Stateroom> staterooms, DateTime? shipDateTime, IEnumerable<DataAccess.Entities.SafetyRole> safetyRoleList, Collection<Crewmember> collection, DataAccess.Entities.Crewmember crew)
        {
            var crewmember = new Crewmember
            {
                CrewmemberId = crew.CrewmemberId,
                CrewmemberTypeId = crew.CrewmemberTypeId,
                PersonalDetail = crew.PersonalDetail,
                Department = crew.DepartmentId,
                SecurityPhotoAddress = crew.SecurityPhotoAddress,
                EmployeeNo = crew.EmployeeNo,
                BoardingInfo = new BoardingInfo { OnboardDate = crew.EmbarkDetail.OnboardDate, AshoreDate = crew.EmbarkDetail.AshoreDate }
            };

            if (crew.CrewmemberRoles.Any())
            {
                var position = crew.CrewmemberRoles.FirstOrDefault();
                crewmember.Position = position != null ? position.RoleId : null;
            }

            var stateroom = staterooms != null ? staterooms.FirstOrDefault(a => a.StateroomId.Equals(crew.StateroomId, StringComparison.OrdinalIgnoreCase)) : null;
            if (stateroom != null)
            {
                crewmember.Stateroom = stateroom.StateroomNumber;
                crewmember.StateroomOccupancy = stateroom.Capacity.ToString(CultureInfo.CurrentCulture);
            }

            var safetyDuty = shipDateTime != null ? crew.SafetyDuties.FirstOrDefault(a => shipDateTime >= a.StartDate && shipDateTime <= a.EndDate) : null;
            var safetyRoleId = safetyDuty != null ? safetyDuty.SafetyRoleId : null;
            var safetyRole = safetyRoleId != null ? safetyRoleList.FirstOrDefault(a => a.SafetyRoleId.Equals(safetyRoleId, StringComparison.OrdinalIgnoreCase)) : null;
            crewmember.SafetyNumber = safetyRole != null ? safetyRole.SafetyNumber : null;

            crewmember.PersonalDetail = crewmember.PersonalDetail ?? new PersonalDetail();

            var passportDetail = crew.Identifications.FirstOrDefault(a => a.DocumentTypeId.Equals(ApplicationSetting.DocumentTypeId, StringComparison.OrdinalIgnoreCase));
            if (passportDetail != null)
            {
                crewmember.PersonalDetail.DocumentNumber = passportDetail.Number;
                crewmember.PersonalDetail.DocumentTypeId = passportDetail.DocumentTypeId;
            }
            else
            {
                var identificationDetail = crew.Identifications.FirstOrDefault();
                if (identificationDetail != null)
                {
                    crewmember.PersonalDetail.DocumentNumber = identificationDetail.Number;
                    crewmember.PersonalDetail.DocumentTypeId = identificationDetail.DocumentTypeId;
                }
            }

            if (crew.CrewmemberAccessCards.Count > 0)
            {
                crewmember.AssignCrewmemberAccessCard(crew.CrewmemberAccessCards);
            }

            collection.Add(crewmember);
        }