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; } }
/// <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)); }