Пример #1
0
        /// <summary>
        /// Android 推播訊息
        /// </summary>
        /// <param name="RegistrationIDList">手機裝置中已註冊的KeyNumber清單</param>
        /// <param name="PushMsg">推播訊息</param>
        /// <returns></returns>
        public async Task <VerityResult> AndroidPushMessage(List <string> RegistrationIDList, AndroidPushMessageViewModel PushMsg)
        {
            VerityResult result = new VerityResult();

            result = AndroinPushByFCM(RegistrationIDList, PushMsg);
            return(await Task.Run(() => result));
        }
Пример #2
0
        public async Task <IHttpActionResult> GetDailyBookings(CarTeamSearchViewModel SearchModel)
        {
            List <CustomerBookingViewModel> data = new List <CustomerBookingViewModel>();

            VerityResult result = new VerityResult();

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

            var user = await _authBLL.FindByName(User.Identity.Name);

            if (user != null)
            {
                int?queryGroupId = _usersService.GetGroupId(user.Id);

                if (queryGroupId.HasValue)
                {
                    SearchModel.GroupId = queryGroupId.Value;
                }

                data = _bookingService.GetCustomerBookingList(SearchModel);
            }

            return(new ResponseMessageResult(
                       Request.CreateResponse(
                           HttpStatusCode.OK,
                           data
                           )));
        }
Пример #3
0
        /// <summary>
        /// 新增帳號
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <VerityResult> CreateUser(CreateUserViewModel model)
        {
            VerityResult result = new VerityResult();

            user AddUser = new user()
            {
                ur_id = Guid.NewGuid().ToString(),
                ur_ac = model.ur_ac,
                ur_pw = MD5Str.MD5(model.ur_pw),
                ur_ct = DateTime.Now,
                ur_is = true,
                ur_im = model.ur_im
            };

            try
            {
                _user.Create(AddUser);
                result.Success = true;
                result.Message = "新增帳號成功";
            }
            catch
            {
                result.Success = false;
                result.Message = "新增帳號失敗";
            }

            return(await Task.Run(() => result));
        }
Пример #4
0
        public async Task <IHttpActionResult> SetDailyServiceTrips(TripInputViewModel model)
        {
            _logger.Information("SetDailyServiceTrips model: " + JsonConvert.SerializeObject(model));

            VerityResult result = new VerityResult();

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

                string userId = _aspNetUsersService.QueryUser(User.Identity.Name).Id;
                result = await _putTripService.CreateOrUpdatePutTrip(model, userId);

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

                result.IsOk    = false;
                result.Message = ex.Message.ToString();
                return(ReturnResponseMessageResult(result, HttpStatusCode.InternalServerError));

                throw ex;
            }
        }
        // POST: api/CheckTotalRecord
        public async Task <IHttpActionResult> Get(string StartDateTime)
        {
            VerityResult result = new VerityResult();

            try
            {
                SearchTime modelTime = new SearchTime
                {
                    StartDateTime = DateTime.Parse(StartDateTime),
                };

                var totalRecord = await _totalRecord.CheckTotalRecord(modelTime);

                result.Success = true;
                result.Message = "更新彙總紀錄成功";
                return(new ResponseMessageResult(Request.CreateResponse(HttpStatusCode.OK, result)));
            }
            catch (Exception ex)
            {
                result.Success = false;
                result.Message = JsonConvert.SerializeObject(ex);
                return(new ResponseMessageResult(Request.CreateResponse(HttpStatusCode.InternalServerError, result)));

                throw;
            }
        }
Пример #6
0
        /// <summary>
        /// 上傳影像檔案與寫進貨物照片之DB操作
        /// </summary>
        /// <param name="file"></param>
        /// <param name="UserId"></param>
        /// <param name="MessageID"></param>
        /// <param name="Count"></param>
        /// <returns></returns>
        public async Task <VerityResult> UploadImageFile(HttpPostedFileBase file, string UserId, string MessageID, int Count)
        {
            VerityResult verityResult = new VerityResult();

            BookingGoodsPhotoViewModel goodsPhoto = new BookingGoodsPhotoViewModel();

            string filePath      = string.Empty;
            string fileDirectory = ConfigurationManager.AppSettings["UploadGoodsImagePath"] + UserId + "\\" + MessageID;

            if (!Directory.Exists(fileDirectory))
            {
                Directory.CreateDirectory(fileDirectory);
            }

            string extension      = Path.GetExtension(file.FileName);
            string customFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + Count + extension;

            filePath = fileDirectory + "/" + customFileName;
            ReSizeImage.SaveThumb(800, 600, file.InputStream, filePath);

            goodsPhoto.MessageId     = MessageID;
            goodsPhoto.PhotoFileName = customFileName;
            verityResult             = await _bookingService.CreateOrUpdateBookingGoodsPhoto(goodsPhoto);

            return(verityResult);
        }
Пример #7
0
        /// <summary>
        /// 編輯帳號資料
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <VerityResult> EditUserItem(UserViewModel model)
        {
            VerityResult result = new VerityResult();

            try
            {
                var query = _user.FindBy(x => x.ur_id == model.ur_id);

                if (query.Any())
                {
                    var  list = query.FirstOrDefault();
                    user item = list;
                    item.ur_ac = model.ur_ac;
                    string Md5Str = MD5Str.MD5(model.ur_pw);
                    item.ur_pw = Md5Str;
                    if (!string.IsNullOrEmpty(model.ur_im))
                    {
                        item.ur_im = model.ur_im;
                    }
                    _user.Update(item);
                }

                result.Success = true;
                result.Message = "編輯帳號資料成功";
            }

            catch
            {
                result.Success = false;
                result.Message = "編輯帳號資料失敗";
            }

            return(await Task.Run(() => result));
        }
Пример #8
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;
            }
        }
        public async Task <ActionResult <VerityResult> > UpdateUser(SystemUserModel InputModel)
        {
            VerityResult responseResult = new VerityResult();

            try
            {
                responseResult = await _systemUserManager.CreateOrUpdateUser(InputModel, "Sys");
            }
            catch (Exception ex)
            {
                responseResult.StatusCode = HttpStatusCode.InternalServerError;
                responseResult.Message    = JsonConvert.SerializeObject(ex.Message);
            }
            return(responseResult);
        }
Пример #10
0
        public VerityResult JudgeUserIdentifyNameToVerityResult()
        {
            VerityResult verityResult = new VerityResult();

            if (User.Identity.Name == null)
            {
                verityResult.IsOk    = false;
                verityResult.Message = Resource.TokenInactive;
            }
            else
            {
                verityResult.IsOk = true;
            }

            return(verityResult);
        }
Пример #11
0
        /// <summary>
        /// 邊更打卡時間
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <VerityResult> SubmitClick_In(CheckRecordViewModel model)
        {
            VerityResult res = new VerityResult();

            try
            {
                check_in item = new check_in();

                var query = _check_in.FindBy(x => x.ci_sn == model.ci_sn);

                if (query.Any())
                {
                    item       = query.FirstOrDefault();
                    item.ci_ut = model.ci_ut;
                    item.ci_dt = model.ci_dt;

                    var nowDate = item.ci_da.ToString("yyyy-MM-dd");

                    if (item.ci_ut != TimeSpan.Zero && item.ci_dt != TimeSpan.Zero)
                    {
                        TimeSpan dt1 = item.ci_ut;
                        TimeSpan dt2 = item.ci_dt;
                        TimeSpan ts  = dt2.Subtract(dt1);

                        double hours = Math.Round(ts.TotalHours, 1) - 1;
                        if (hours > 0)
                        {
                            item.ci_hr = hours;
                        }
                    }
                    ;

                    item.Remark = "變更打卡時間";
                    _check_in.Update(item);
                    res.Success = true;
                    res.Message = "變更打卡資料成功";
                }
            }
            catch
            {
                res.Success = false;
                res.Message = "變更打卡資料失敗";
            }

            return(await Task.Run(() => res));
        }
Пример #12
0
        /// <summary>
        /// 建立指定路徑上所缺少的資料夾
        /// </summary>
        /// <param name="path">The path.</param>
        /// <returns></returns>
        public static VerityResult CreateFolderIfNeeded(string path)
        {
            VerityResult result = new VerityResult();

            if (!Directory.Exists(path))
            {
                try {
                    Directory.CreateDirectory(path);
                    result.Success = true;
                }
                catch (Exception) {
                    result.Success = false;
                    result.Message = "新增指定路徑資料夾失敗";
                }
            }
            return(result);
        }
Пример #13
0
        /// <summary>
        /// 非同步執行推播API
        /// </summary>
        /// <param name="PushMsg"></param>
        /// <returns></returns>
        public async Task <Uri> RunPushApiAsync(PushMessageViewModel PushMsg)
        {
            _logger.Information("RunPushApiAsync model: " + JsonConvert.SerializeObject(PushMsg));

            HttpClient httpClient = new HttpClient();

            httpClient.BaseAddress = new Uri(PushAPIUrl);
            httpClient.DefaultRequestHeaders.Accept.Clear();
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            try
            {
                #region 新增手機推播訊息紀錄
                VerityResult        result = new VerityResult();
                PhonePushMessageLog log    = new PhonePushMessageLog();
                log.MessageId  = PushMsg.messageid;
                log.PushTime   = BsonDateTime.Create(DateTime.Now);
                log.Title      = PushMsg.title;
                log.Body       = PushMsg.body;
                log.SenderId   = PushMsg.senderid;
                log.ReaderId   = PushMsg.readerid;
                log.KeyNumber  = PushMsg.KeyNumber;
                log.MobileType = PushMsg.MobileType;
                log.Category   = PushMsg.category;
                log.IsRead     = false;
                log.IsDelete   = false;

                result = await _phonePushMessageService.Create(log);

                #endregion

                HttpResponseMessage response = await httpClient.PostAsJsonAsync(
                    "api/Push/PushNoticeMessage", PushMsg);

                response.EnsureSuccessStatusCode();

                // return URI of the created resource.
                return(response.Headers.Location);
            }
            catch (Exception ex)
            {
                _logger.Information("RunPushApiAsync model: " + JsonConvert.SerializeObject(ex));
                throw ex;
            }
        }
Пример #14
0
        /// <summary>
        /// 註冊: 新增使用者資料
        /// </summary>
        /// <param name="userModel"></param>
        /// <returns></returns>
        public async Task <IdentityResult> RegisterUser(UserModel userModel)
        {
            ApplicationUser newone = new ApplicationUser();

            newone.UserName             = userModel.PhoneNumber;
            newone.RealName             = userModel.RealName;
            newone.PhoneNumber          = userModel.PhoneNumber;
            newone.RegisterDate         = DateTime.Now;
            newone.CreateUser           = userId;
            newone.Area                 = userModel.Area;
            newone.PhoneNumberConfirmed = true;

            newone.Level = (byte)MemberLevelEnum.DriverLevel1;            //暫定以車主等級

            _logger.Information("AuthRepository_RegisterUser[ApplicationUser]: {0}", JsonConvert.SerializeObject(newone));
            try
            {
                IdentityResult result = await _userManager.CreateAsync(newone, userModel.Password);

                _logger.Information("AuthRepository_RegisterUser(Create OK): {0}", JsonConvert.SerializeObject(result));

                //帳號加入角色
                AspNetUserRoles ur = new AspNetUserRoles();
                ur.RoleId  = userModel.RoleId;
                ur.UserId  = newone.Id;
                ur.IsValid = true;
                _aspnetUserRoles.Create(ur);

                //CreateUserExtend
                userModel.Id = newone.Id;
                VerityResult verityResult = new VerityResult();
                verityResult = await _aspnetUsersService.CreateOrUpdateUserExtend(userModel);

                _logger.Information("AuthRepository_RegisterUser_[CreateOrUpdateUserExtend]_Result: {0}", JsonConvert.SerializeObject(verityResult));

                return(result);
            }
            catch (Exception ex)
            {
                _logger.Information("AuthRepository_RegisterUser_Exception: {0}", JsonConvert.SerializeObject(ex.Message.ToString()));
                throw ex;
            }
        }
Пример #15
0
        public async Task <IHttpActionResult> QueryTripStatus(BookingIdModel SearchModel)
        {
            BookingStatusViewModel data = new BookingStatusViewModel();

            VerityResult result = new VerityResult();

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

            data = await _bookingService.GetBookingStatusList(SearchModel);

            return(new ResponseMessageResult(
                       Request.CreateResponse(
                           HttpStatusCode.OK,
                           data
                           )));
        }
Пример #16
0
        public async Task <VerityResult> ConfirmOrder(List <OrderViewModel> model)
        {
            VerityResult result    = new VerityResult();
            List <Order> modellist = new List <Order>();

            foreach (var OrderItem in from item in model
                     let FindItem = _orderService.FindBy(x => x.OrderId == item.OrderId)
                                    where FindItem.Any()
                                    let OrderItem = FindItem.FirstOrDefault()
                                                    select OrderItem)
            {
                OrderItem.Status = 1;
                modellist.Add(OrderItem);
            }

            if (modellist.Any())
            {
                _orderService.UpdateMultiple(modellist);
            }

            return(await Task.Run(() => result));
        }
Пример #17
0
        /// <summary>
        /// 刪除帳號資料
        /// </summary>
        /// <param name="ur_id"></param>
        /// <returns></returns>
        public async Task <VerityResult> DeleteUserItem(string ur_id)
        {
            VerityResult result = new VerityResult();

            try
            {
                var query = _user.FindBy(x => x.ur_id == ur_id);
                if (query.Any())
                {
                    user item = query.FirstOrDefault();
                    _user.Delete(item);

                    result.Success = true;
                    result.Message = "刪除最新消息成功";
                }
            }
            catch
            {
                result.Success = false;
                result.Message = "刪除最新消息失敗";
            }

            return(await Task.Run(() => result));
        }
        public async Task <ActionResult> Save(BookingViewModel model, HttpPostedFileBase[] goodsPhotoUpload)
        {
            VerityBookingResult result = new VerityBookingResult();

            if (ModelState.IsValid)
            {
                try
                {
                    var user = _aspNetUsersService.GetUserModelByName(User.Identity.Name);
                    result = await _bookingService.CreateOrUpdateBooking(model, user.Id, user.CompanyId);

                    if (result.IsOk)
                    {
                        int count = 1;
                        foreach (HttpPostedFileBase file in goodsPhotoUpload)
                        {
                            VerityResult uploadResult = new VerityResult();
                            bool         isUpload     = FileUploadVerify(file);
                            if (isUpload)
                            {
                                uploadResult = await UploadImageFile(file, result.GoodOwnerId, result.MessageId, count);
                            }

                            count++;
                        }

                        TempData["SaveResult"] = result.Message;

                        #region 推播
                        if (!string.IsNullOrEmpty(model.DriverId))
                        {
                            string appellationGoodsOwner = string.Empty;
                            if (!string.IsNullOrEmpty(user.Sex))
                            {
                                appellationGoodsOwner = StringExt.AppellationName(user.RealName, user.Sex.Trim());
                            }
                            else
                            {
                                appellationGoodsOwner = user.RealName;
                            }

                            string title = Resource.GoodsOwner + appellationGoodsOwner + Resource.ConfirmTransaction;
                            string body  = model.BookingDate + " " + model.StartAddress + Resource.GoToward + model.TargetAddress;

                            PushMessageViewModel pushMsg = RunPushApi(title, body, user.Id, model.DriverId, 3, result.MessageId.ToString());
                            await RunPushApiAsync(pushMsg);
                        }
                        #endregion

                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        TempData["SaveResult"] = result.Message;
                    }
                }
                catch (Exception ex)
                {
                    TempData["SaveResult"] = result.Message;
                    _logger.Information($"Save BookingViewModel error : { JsonConvert.SerializeObject(ex)}");
                    throw ex;
                }
            }
            return(View("Create", model));
        }
Пример #19
0
        /// <summary>
        /// 更新彙整記錄
        /// </summary>
        /// <param name="searchModel"></param>
        /// <returns></returns>
        public async Task <VerityResult> CheckTotalRecord(SearchTime searchModel)
        {
            VerityResult     res       = new VerityResult();
            List <check_all> check_All = new List <check_all>();

            try
            {
                DateTime nowDate = DateTime.Now;

                var year  = searchModel.StartDateTime.Year;
                var month = searchModel.StartDateTime.Month;
                var days  = 0;
                if (nowDate.Year == year && nowDate.Month == month)
                {
                    days = nowDate.Day;
                }
                else
                {
                    days = DateTime.DaysInMonth(year, month);
                }
                int weekDays = 0;

                for (int i = 0; i < days; i++)
                {
                    // 判断是否為周六、周日
                    switch (searchModel.StartDateTime.DayOfWeek)
                    {
                    case DayOfWeek.Saturday:
                        weekDays++;
                        break;

                    case DayOfWeek.Sunday:
                        weekDays++;
                        break;
                    }
                    searchModel.StartDateTime = searchModel.StartDateTime.AddDays(1);
                }
                // 工作日
                int workDays = days - weekDays;

                var checkIn = from a in _check_in.GetAll()
                              join c in _user.GetAll() on a.ur_id equals c.ur_id
                              where a.ca_mo == month && a.ci_ut != TimeSpan.Zero && a.ci_dt != TimeSpan.Zero
                              group a by new
                {
                    a.ur_id,
                    a.ca_mo,
                    ca_ya = a.ci_da.Year,
                } into ga
                    select new Check_AllViewModel
                {
                    ur_id = ga.Key.ur_id,
                    ca_ya = ga.Key.ca_ya,
                    ca_mo = ga.Key.ca_mo,
                    ca_dy = workDays,
                    ca_on = ga.Count(),
                    ca_hr = ga.Sum(x => x.ci_hr)
                };

                if (checkIn.Any())
                {
                    foreach (var item in checkIn.ToList())
                    {
                        check_all check_All_Item = new check_all();

                        var Find_check_all = _check_all.FindBy(x => x.ur_id == item.ur_id && x.ca_mo == item.ca_mo).ToList();

                        if (Find_check_all.Any())
                        {
                            check_All_Item       = Find_check_all.FirstOrDefault();
                            check_All_Item.ca_dy = item.ca_dy;
                            check_All_Item.ca_on = item.ca_on;
                            check_All_Item.ca_hr = item.ca_hr;
                            check_All.Add(check_All_Item);

                            _check_all.Update(check_All_Item);
                        }
                        else
                        {
                            check_All_Item.ur_id = item.ur_id;
                            check_All_Item.ca_ya = item.ca_ya;
                            check_All_Item.ca_mo = item.ca_mo;
                            check_All_Item.ca_dy = item.ca_dy;
                            check_All_Item.ca_on = item.ca_on;
                            check_All_Item.ca_hr = item.ca_hr;

                            check_All.Add(check_All_Item);

                            _check_all.Create(check_All_Item);
                        }
                    }
                    res.Success = true;
                    res.Message = "更新打卡紀錄成功";
                }
            }
            catch
            {
                res.Success = false;
                res.Message = "更新打卡紀錄失敗";
            }

            return(await Task.Run(() => res));
        }
        /// <summary>
        /// 新增或更新使用者
        /// </summary>
        /// <param name="InputModel"></param>
        /// <param name="UserId"></param>
        /// <returns></returns>
        public async Task <VerityResult> CreateOrUpdateUser(SystemUserModel InputModel, string UserId)
        {
            VerityResult result = new VerityResult();

            try
            {
                SystemUser actionItem = new SystemUser();

                if (InputModel.ID == 0)
                {
                    actionItem.Code       = InputModel.Code;
                    actionItem.Name       = InputModel.Name;
                    actionItem.Password   = "******";
                    actionItem.Token      = " ";
                    actionItem.CreateUser = UserId;
                    actionItem.CreateTime = DateTime.Now;
                    actionItem.Modifier   = UserId;
                    actionItem.ModifyTime = DateTime.Now;

                    using (var uow = _dapperUnitOfWorkFactory.Create())
                    {
                        _systemUserRepository.Add(actionItem);
                        uow.SaveChanges();
                    }

                    if (result.StatusCode != HttpStatusCode.InternalServerError)
                    {
                        result.StatusCode = HttpStatusCode.OK;
                        result.Message    = "CreateSuccess";                     // string.Format(ResourceMessage.CreateSuccess, "SystemUser");
                    }
                }
                else
                {
                    var existUser = _systemUserRepository.Get(InputModel.ID);

                    if (existUser == null)
                    {
                        result.StatusCode = HttpStatusCode.NotFound;
                        result.Message    = "NotExistedData";                     // string.Format(ResourceMessage.NotExistedData, InputModel.ID);
                    }
                    else
                    {
                        existUser.Modifier   = UserId;
                        existUser.ModifyTime = DateTime.Now;

                        using (var uow = _dapperUnitOfWorkFactory.Create())
                        {
                            _systemUserRepository.Add(actionItem);
                            uow.SaveChanges();
                        }

                        //_systemUserRepository.Update(dict, "ID");

                        result.StatusCode = HttpStatusCode.OK;
                        result.Message    = "UpdateSuccess";                     // string.Format(ResourceMessage.UpdateSuccess, "SystemUser");
                    }
                }
            }
            catch (Exception ex)
            {
                result.StatusCode = HttpStatusCode.InternalServerError;
                result.Message    = ex.Message;

                ExceptionLog log = new ExceptionLog()
                {
                    FunctionName     = " CreateOrUpdateUser(SystemUserModel InputModel, string UserId)",
                    Parameter        = InputModel,
                    StatusCode       = HttpStatusCode.InternalServerError,
                    ExceptionMessage = ex
                };
            }
            return(await Task.Run(() => result));
        }
Пример #21
0
        /// <summary>
        /// 新增或更新 放趟
        /// </summary>
        /// <param name="model"></param>
        /// <param name="UserId"></param>
        /// <returns></returns>
        public async Task <VerityResult> CreateOrUpdatePutTrip(TripInputViewModel model, string UserId)
        {
            VerityResult result = new VerityResult();

            using (var transaction = _putTripRepository._context.Database.BeginTransaction())
            {
                try
                {
                    PutTrip actionItem   = new PutTrip();
                    int?    groupId      = _usersService.GetGroupId(UserId);
                    var     queryPutTrip = _db.PutTrip.Where(x => x.date.Value == model.date.Date && x.groupId == groupId);
                    if (!queryPutTrip.Any())
                    {
                        DbSetExt.CopyObject <PutTrip>(model, ref actionItem);

                        var    maxTripId   = _db.PutTrip.Max(x => x.tripId);
                        string generTripId = GetSerialNumber(maxTripId);

                        actionItem.username      = UserId;
                        actionItem.groupId       = _usersService.GetGroupId(UserId);
                        actionItem.date          = model.date;
                        actionItem.createTime    = DateTime.Now;
                        actionItem.tripId        = generTripId;
                        actionItem.type          = true;
                        actionItem.isClose       = true;
                        actionItem.AuthorizeType = model.AuthotrizeType;

                        _putTripRepository.Create(actionItem);

                        result.IsOk    = true;
                        result.Message = string.Format(Resource.CreateSuccess, "PutTrip");
                    }
                    else
                    {
                        actionItem = queryPutTrip.First();

                        #region 驗證是否是自己的車隊 groupId
                        int?queryDriverGroupID = _usersService.GetGroupId(UserId);
                        if (queryDriverGroupID.HasValue)
                        {
                            if (actionItem.groupId == queryDriverGroupID.Value)
                            {
                                DbSetExt.CopyObject <PutTrip>(model, ref actionItem);
                                actionItem.isClose       = false;
                                actionItem.AuthorizeType = model.AuthotrizeType;
                                actionItem.updateTime    = DateTime.Now;

                                _putTripRepository.Update(actionItem);

                                result.IsOk    = true;
                                result.Message = string.Format(Resource.UpdateSuccess, "PutTrip");
                            }
                            else
                            {
                                DbSetExt.CopyObject <PutTrip>(model, ref actionItem);

                                var    maxTripId   = _db.PutTrip.Max(x => x.tripId);
                                string generTripId = GetSerialNumber(maxTripId);

                                actionItem.username      = UserId;
                                actionItem.groupId       = _usersService.GetGroupId(UserId);
                                actionItem.date          = model.date;
                                actionItem.createTime    = DateTime.Now;
                                actionItem.tripId        = generTripId;
                                actionItem.type          = true;
                                actionItem.isClose       = true;
                                actionItem.AuthorizeType = model.AuthotrizeType;

                                _putTripRepository.Create(actionItem);

                                result.IsOk    = true;
                                result.Message = string.Format(Resource.CreateSuccess, "PutTrip");
                            }
                        }
                        #endregion
                    }
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    result.Message = ex.Message.ToString();
                    result.IsOk    = false;
                    throw ex;
                }
            }
            return(await Task.Run(() => result));
        }
Пример #22
0
 public ResponseMessageResult ReturnResponseMessageResult(VerityResult Result, HttpStatusCode CustomHttpStatusCode)
 {
     return(new ResponseMessageResult(
                Request.CreateResponse(CustomHttpStatusCode, Result)
                ));
 }
 public PublishScheduleVerifyResult()
 {
     VerityResult = new VerityResult();
     PublishScheduleResultList = new List <PublishScheduleResult>();
 }
Пример #24
0
        /// <summary>
        /// FCM (Google firebase colud Message)
        /// </summary>
        /// <param name="RegistrationIDList">手機裝置中已註冊的KeyNumber清單</param>
        /// <param name="PushMsg">播訊息</param>
        /// <returns></returns>
        private VerityResult AndroinPushByFCM(List <string> RegistrationIDList, AndroidPushMessageViewModel PushMsg)
        {
            //Google Api Key
            string apiKEY = ConfigurationManager.AppSettings["AndroidApiKey"].ToString();

            //Google firebase colud message SenderId
            string senderID = ConfigurationManager.AppSettings["FCMSenderId"].ToString();

            _logger.Information("PushService AndroinPushByFCM paras: apikey= {0}, senderid= {1}, RegistrationIDList= {2}, PushMsg= {3}"
                                , apiKEY, senderID, JsonConvert.SerializeObject(RegistrationIDList), JsonConvert.SerializeObject(PushMsg));

            VerityResult result = new VerityResult();

            result.IsOk = true;

            try
            {
                if (RegistrationIDList != null && RegistrationIDList.Count > 0)
                {
                    foreach (var regid in RegistrationIDList)
                    {
                        WebRequest webRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
                        webRequest.Method      = "post";
                        webRequest.ContentType = "application/json";

                        #region Set the Header property of the WebRequest.
                        //"FCM伺服器金鑰";
                        webRequest.Headers.Add(string.Format("Authorization: key={0}", apiKEY));

                        //FCM寄件者 ID
                        webRequest.Headers.Add(string.Format("Sender: id={0}", senderID));
                        #endregion

                        var data = new
                        {
                            to   = regid,
                            data = PushMsg
                        };

                        _logger.Information("PushService AndroinPushByFCM data:" + JsonConvert.SerializeObject(data));

                        string json      = JsonConvert.SerializeObject(data);
                        Byte[] byteArray = Encoding.UTF8.GetBytes(json);
                        webRequest.ContentLength = byteArray.Length;

                        using (Stream dataStream = webRequest.GetRequestStream())
                        {
                            dataStream.Write(byteArray, 0, byteArray.Length);
                            using (WebResponse webResponse = webRequest.GetResponse())
                            {
                                using (Stream dataStreamResponse = webResponse.GetResponseStream())
                                {
                                    using (StreamReader tReader = new StreamReader(dataStreamResponse))
                                    {
                                        String sResponseFromServer = tReader.ReadToEnd();
                                        string str = sResponseFromServer;
                                        _logger.Information("PushService SendPushNotificationToFCM Result:" + str);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                result.IsOk    = false;
                result.Message = ex.Message.ToString();
                _logger.Error(ex, "AndroinPushByFCM Error:" + ex.Message.ToString());
            }
            return(result);
        }
Пример #25
0
        public async Task <ActionResult> Save(BookingQuoteCollection model, HttpPostedFileBase[] goodsPhotoUpload)
        {
            VerityBookingResult result = new VerityBookingResult();

            if (ModelState.IsValid)
            {
                try
                {
                    var user = _aspNetUsersService.GetUserModelByName(User.Identity.Name);
                    result = await _bookingService.UpdateBookingQuote(model, user.Id, user.CompanyId);

                    if (result.IsOk)
                    {
                        int count = 1;
                        if (goodsPhotoUpload != null)
                        {
                            foreach (HttpPostedFileBase file in goodsPhotoUpload)
                            {
                                VerityResult uploadResult = new VerityResult();
                                bool         isUpload     = FileUploadVerify(file);
                                if (isUpload)
                                {
                                    uploadResult = await UploadImageFile(file, result.GoodOwnerId, result.MessageId, count);
                                }

                                count++;
                            }
                        }

                        TempData["SaveResult"] = result.Message;

                        #region 推播通知原車主取消、新車主新任務
                        //原車主
                        var    queryOriginDriver = _aspNetUsersService.GetUserModel(model.DriverQuotePrice.OldDriverId);
                        string originDriver      = string.Empty;
                        if (!string.IsNullOrEmpty(queryOriginDriver.Sex))
                        {
                            originDriver = StringExt.AppellationName(queryOriginDriver.RealName, queryOriginDriver.Sex.Trim());
                        }
                        else
                        {
                            originDriver = queryOriginDriver.RealName;
                        }

                        string title = "原" + Resource.Driver + originDriver + MessageResource.CancelMission;
                        string body  = string.Empty;

                        PushMessageViewModel pushMsg = RunPushApi(title, body, user.Id, model.DriverQuotePrice.OldDriverId, 10, model.Booking.MessageId.ToString());
                        await RunPushApiAsync(pushMsg);

                        //新車主
                        var    queryNewDriver = _aspNetUsersService.GetUserModel(model.DriverQuotePrice.DriverId);
                        string newDriver      = string.Empty;
                        if (!string.IsNullOrEmpty(queryNewDriver.Sex))
                        {
                            newDriver = StringExt.AppellationName(queryNewDriver.RealName, queryNewDriver.Sex.Trim());
                        }
                        else
                        {
                            newDriver = queryNewDriver.RealName;
                        }

                        string newTitle = "新" + Resource.Driver + newDriver + MessageResource.HadNewMission;
                        string newBody  = string.Empty;

                        PushMessageViewModel newPushMsg = RunPushApi(newTitle, newBody, user.Id, model.DriverQuotePrice.DriverId, 10, model.Booking.MessageId.ToString());
                        await RunPushApiAsync(newPushMsg);

                        #endregion

                        #region 推播通知貨主變更司機
                        //貨主
                        var    queryGoodsOwner = _aspNetUsersService.GetUserModel(model.Booking.GoodOwnerId);
                        string goodsOwner      = string.Empty;
                        if (!string.IsNullOrEmpty(queryGoodsOwner.Sex))
                        {
                            goodsOwner = StringExt.AppellationName(queryGoodsOwner.RealName, queryGoodsOwner.Sex.Trim());
                        }
                        else
                        {
                            goodsOwner = queryNewDriver.RealName;
                        }

                        string forgoodsOwnerTitle = "原" + Resource.Driver + originDriver + "變更為新" + Resource.Driver + newDriver;
                        PushMessageViewModel goodsOwnerPushMsg = RunPushApi(forgoodsOwnerTitle, null, user.Id, model.Booking.GoodOwnerId, 10, model.Booking.MessageId.ToString());
                        await RunPushApiAsync(goodsOwnerPushMsg);

                        #endregion

                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        TempData["SaveResult"] = result.Message;
                    }
                }
                catch (Exception ex)
                {
                    TempData["SaveResult"] = result.Message;
                    _logger.Information($"Save BookingViewModel error : { JsonConvert.SerializeObject(ex)}");
                    throw ex;
                }
            }
            return(View("Create", model));
        }