Exemplo n.º 1
0
        public async Task Resign(string staffId, DateTime?lastWorkingDay)
        {
            if (Config.AutomaticFlightRequestResignation != true)
            {
                return;
            }

            var staff = _staffRepo.GetByStaffId(staffId);

            if (staff == null)
            {
                Logger.Warning("Could not find staff with staffId, aborting send resign to f2w",
                               new { staffId });

                return;
            }

            DateTime?dateOfBirth = null;
            DateTime d2;
            bool     success = DateTime.TryParse(staff.DateOfBirth, out d2);

            if (success)
            {
                dateOfBirth = d2;
            }

            var currentPositionAssign = _positionRepo.GetCtxResignModel(staff.StaffID);

            SendModel resign = new SendModel
            {
                Id                  = staff.StaffID,
                FirstName           = staff.FirstName,
                LastName            = staff.LastName,
                LastName2           = staff.LastName2,
                DateOfBirth         = dateOfBirth,
                SourceMarket        = staff.SourceMarket,
                Gender              = staff.Title,
                Phone               = staff.PhoneHome,
                PositionStart       = currentPositionAssign?.StartDate,
                Destination         = currentPositionAssign?.Destination,
                JobTitle            = currentPositionAssign?.JobTitle,
                Direction           = "Departing",
                IataCode            = currentPositionAssign?.IataCode,
                PositionAssignId    = currentPositionAssign?.Id,
                TypeOfFlight        = "Resignation",
                ConfirmedFlightDate = currentPositionAssign?.ConfirmedFlightDate,
                YearRound           = currentPositionAssign?.Season == "YR"
            };

            Uri uri = new Uri($"{Config.CtxEndpoint}/staff/resign/basic");

            var req = new
            {
                originalStaffId = staffId,
                lastWorkingDay,
                resign
            };

            var result = await _f2wRestClient.Post <List <ResignFlightRequestResultModel>, dynamic>(uri, req);

            var user = _userRepo.GetUser();

            if (!result.Succeeded)
            {
                Logger.Warning("Could not delete flight requests for resigned staff", new { staffId, result, user });
            }
            else
            {
                if (result.Data.Any(m => m.ok == false))
                {
                    Logger.Warning("Could not delete one or more flight requests for resigned staff", new { staffId, result, user });
                }
                else
                {
                    Logger.Info("Successfully resigned staff in f2w", new { staffId, result, user });
                }
            }
        }