Example #1
0
        public async Task <IHttpActionResult> ImportDailyDriverSchedule(List <PublishScheduleInputViewModel> PublishScheduleInputModel)
        {
            _logger.Information("ImportDailyDriverSchedule model: " + JsonConvert.SerializeObject(PublishScheduleInputModel));

            PublishScheduleVerifyResult publishScheduleresult = new PublishScheduleVerifyResult();

            try
            {
                VerityResult result = new VerityResult();
                result = JudgeUserIdentifyNameToVerityResult();
                if (!result.IsOk)
                {
                    return(ReturnResponseMessageResult(result, HttpStatusCode.Unauthorized));
                }

                publishScheduleresult = await _bookingService.PublishToUpdateBooking(PublishScheduleInputModel);

                _logger.Information("ImportDailyDriverSchedule result: " + JsonConvert.SerializeObject(publishScheduleresult));

                foreach (var pushItem in publishScheduleresult.PublishScheduleResultList)
                {
                    AndroidPushMessageViewModel pushMsg = new AndroidPushMessageViewModel();
                    pushMsg.title    = "平台發佈了新班表!";
                    pushMsg.body     = "請大家確認" + pushItem.BookingDate + "班表😎";
                    pushMsg.readerid = pushItem.DriverId.ToString();
                    List <string> RegistrationIDList = new List <string>();
                    RegistrationIDList.Add(pushItem.KeyNumber);
                    await _pushService.AndroidPushMessage(RegistrationIDList, pushMsg);
                }

                return(new ResponseMessageResult(
                           Request.CreateResponse(
                               HttpStatusCode.OK,
                               publishScheduleresult
                               )));
            }
            catch (Exception ex)
            {
                _logger.Information("ImportDailyDriverSchedule Error: " + JsonConvert.SerializeObject(ex));

                publishScheduleresult.VerityResult.IsOk    = false;
                publishScheduleresult.VerityResult.Message = ex.Message.ToString();

                return(new ResponseMessageResult(
                           Request.CreateResponse(
                               HttpStatusCode.InternalServerError,
                               publishScheduleresult
                               )));

                throw ex;
            }
        }
Example #2
0
        /// <summary>
        /// 發佈班表更新預約列表
        /// </summary>
        /// <param name="PublishScheduleInputModelList"></param>
        /// <returns></returns>
        public async Task <PublishScheduleVerifyResult> PublishToUpdateBooking(List <PublishScheduleInputViewModel> PublishScheduleInputModelList)
        {
            PublishScheduleVerifyResult result = new PublishScheduleVerifyResult();

            using (var transaction = _bookingRepository._context.Database.BeginTransaction())
            {
                try
                {
                    List <PublishScheduleResult> publishScheduleResultList = new List <PublishScheduleResult>();
                    List <Booking> bookingItems = new List <Booking>();
                    foreach (var item in PublishScheduleInputModelList)
                    {
                        Booking actionItem = new Booking();
                        var     query      = _bookingRepository.FindBy(x => x.BookingId == item.BookingId);
                        if (query.Any())
                        {
                            actionItem = query.First();

                            Taxi taxi      = new Taxi();
                            var  queryTaxi = _TMSDb.Taxi.Where(x => x.TaxiCallNo == item.TaxiCallNo);
                            if (queryTaxi.Any())
                            {
                                taxi = queryTaxi.First();
                                actionItem.TaxiId = taxi.TaxiId;
                            }

                            Driver driver      = new Driver();
                            var    queryDriver = _TMSDb.Driver.Where(x => x.DriverName == item.DriverName);
                            if (queryDriver.Any())
                            {
                                driver = queryDriver.First();
                                actionItem.DriverId = driver.DriverId;
                            }

                            actionItem.ProcessStatus = (Byte)BookingStatus.Accept;

                            bookingItems.Add(actionItem);

                            PublishScheduleResult scheduleResult = new PublishScheduleResult();
                            scheduleResult.BookingId          = item.BookingId;
                            scheduleResult.BookingDate        = actionItem.BookingDate;
                            scheduleResult.TaxiCallNo         = item.TaxiCallNo;
                            scheduleResult.LicensePlateNumber = taxi.LicensePlateNumber;
                            scheduleResult.DriverId           = driver.DriverId;
                            scheduleResult.DriverName         = driver.DriverName;

                            var queryMobilePushKey =
                                from main in _TMSDb.AspNetUsers.Where(x => x.NickName == driver.DriverName)
                                join mobilePushKey in _TMSDb.MobilePushKey on main.Id equals mobilePushKey.UserId
                                select mobilePushKey;

                            if (queryMobilePushKey.Any())
                            {
                                scheduleResult.KeyNumber = queryMobilePushKey.First().KeyNumber;
                            }

                            publishScheduleResultList.Add(scheduleResult);
                        }
                    }
                    _bookingRepository.UpdateMultiple(bookingItems);
                    transaction.Commit();

                    result.VerityResult.IsOk         = true;
                    result.VerityResult.Message      = string.Format(Resource.UpdateSuccess, "PublishToUpdateBooking");
                    result.PublishScheduleResultList = publishScheduleResultList;
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    result.VerityResult.Message = ex.Message.ToString();
                    result.VerityResult.IsOk    = false;
                    throw ex;
                }
            }
            return(await Task.Run(() => result));
        }