public async Task <BaseResponse <bool> > CreateYachtTourCharterProcessingFees(YachtTourCharterProcessingFeesCreateModel model) { try { if (model == null) { return(BaseResponse <bool> .BadRequest()); } var checkExistEntity = _context.YachtTourCharterProcessingFees.Find(model.TourCharterFid); if (checkExistEntity == null) { var entity = new YachtTourCharterProcessingFees(); entity.InjectFrom(model); entity.GeneratedDate = DateTime.Now; entity.LastModifiedBy = GetUserGuidId(); entity.LastModifiedDate = DateTime.Now; await _context.YachtTourCharterProcessingFees.AddAsync(entity); await _context.SaveChangesAsync(); return(BaseResponse <bool> .Success(true)); } else { return(BaseResponse <bool> .NotFound(message : "Duplicated")); } } catch (Exception ex) { return(BaseResponse <bool> .InternalServerError(message : ex.Message)); } }
public async Task <BaseResponse <bool> > CreateYachtTourCharterProcessingFeesAndChangeStatusReservationTransaction(YachtTourCharterProcessingFeeWithChangeStatusReservationCreateModel model) { using (var transaction = _context.Database.BeginTransaction()) { try { if (model == null) { return(BaseResponse <bool> .BadRequest()); } var userId = GetUserGuidId(); var entityYachtTourCharter = _context.YachtTourCharters.Find(Convert.ToInt64(model.Id ?? "0")); var entityPaymentLog = _context.YachtTourCharterPaymentLogs.Where(p => p.TourCharterFid == Convert.ToInt64(model.Id ?? "0")).AsNoTracking()?.FirstOrDefault(); var checkExistEntityYachtTourCharterProcessingFees = _context.YachtTourCharterProcessingFees.Find(model.TourCharterFid); if (entityYachtTourCharter != null && entityPaymentLog != null && checkExistEntityYachtTourCharterProcessingFees == null) { // Update entity YachtTourCharters entityYachtTourCharter.Processed = true; entityYachtTourCharter.ProcessedRemark = model.ProcessRemark; entityYachtTourCharter.CancelReason = model.CancelRemark; entityYachtTourCharter.ProcessedBy = userId; entityYachtTourCharter.StatusFid = model?.Status.ToInt32() ?? entityYachtTourCharter.StatusFid; entityYachtTourCharter.ProcessedDate = DateTime.Now; // Update resource key status base on Status reservation if (model.Status == ((int)ReservationStatusEnum.WaitingPayment).ToString()) { entityYachtTourCharter.StatusResKey = "WAITINGPAYMENT"; } else if (model.Status == ((int)ReservationStatusEnum.Paid).ToString()) { entityYachtTourCharter.StatusResKey = "PAID"; } else if (model.Status == ((int)ReservationStatusEnum.Pending).ToString()) { entityYachtTourCharter.StatusResKey = "PENDING"; } else if (model.Status == ((int)ReservationStatusEnum.Accepted).ToString()) { entityYachtTourCharter.StatusResKey = "ACCEPTED"; } else if (model.Status == ((int)ReservationStatusEnum.Rejected).ToString()) { entityYachtTourCharter.StatusResKey = "REJECTED"; } else if (model.Status == ((int)ReservationStatusEnum.Cancelled).ToString()) { entityYachtTourCharter.StatusResKey = "CANCELLED"; } else if (model.Status == ((int)ReservationStatusEnum.Completed).ToString()) { entityYachtTourCharter.StatusResKey = "COMPLETED"; } else { entityYachtTourCharter.StatusResKey = "WAITINGPAYMENT"; } _context.YachtTourCharters.Update(entityYachtTourCharter); await _context.SaveChangesAsync(); // Insert entity YachtTourCharterProcessingFees var entityYachtTourCharterProcessingFee = new YachtTourCharterProcessingFees(); entityYachtTourCharterProcessingFee.InjectFrom(model); entityYachtTourCharterProcessingFee.GeneratedDate = DateTime.Now; entityYachtTourCharterProcessingFee.LastModifiedBy = userId; entityYachtTourCharterProcessingFee.LastModifiedDate = DateTime.Now; await _context.YachtTourCharterProcessingFees.AddAsync(entityYachtTourCharterProcessingFee); await _context.SaveChangesAsync(); // Update status reservastion entity PaymentLogs entityPaymentLog.StatusFid = model?.Status.ToInt32() ?? entityPaymentLog.StatusFid; _context.YachtTourCharterPaymentLogs.Update(entityPaymentLog); await _context.SaveChangesAsync(); } //Transaction commit all transaction.Commit(); return(BaseResponse <bool> .Success(true)); } catch (Exception ex) { transaction.Rollback(); return(BaseResponse <bool> .InternalServerError(message : ex.Message)); } } }