protected static FR_Base Execute(DbConnection Connection, DbTransaction Transaction, P_L6MRMS_FRS_1944 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Base(); ORM_USR_Account userAccount = ORM_USR_Account.Query.Search(Connection, Transaction, new ORM_USR_Account.Query() { USR_AccountID = securityTicket.AccountID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }).FirstOrDefault(); if (userAccount == null) { returnValue.Status = FR_Status.Error_Internal; returnValue.ErrorMessage = String.Format("FinalizeReadingSession Fault: User account with id {0} not found.", securityTicket.AccountID.ToString()); return(returnValue); } ORM_MRS_RUN_MeasurementRun measurementRun = ORM_MRS_RUN_MeasurementRun.Query.Search(Connection, Transaction, new ORM_MRS_RUN_MeasurementRun.Query() { MRS_RUN_MeasurementRunID = Parameter.ReadingSessionId, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).FirstOrDefault(); if (measurementRun == null) { returnValue.Status = FR_Status.Error_Internal; returnValue.ErrorMessage = String.Format("FinalizeReadingSession Fault: Measurement run with id {0} not found.", measurementRun.MRS_RUN_MeasurementRunID.ToString()); return(returnValue); } // Find status with global property matching id ORM_MRS_RUN_MeasurementRun_Status measurementRunStatus = ORM_MRS_RUN_MeasurementRun_Status.Query.Search(Connection, Transaction, new ORM_MRS_RUN_MeasurementRun_Status.Query() { GlobalPropertyMatchingID = Parameter.GlobalPropertyMatchingId, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).FirstOrDefault(); if (measurementRunStatus == null) { returnValue.Status = FR_Status.Error_Internal; returnValue.ErrorMessage = String.Format("FinalizeReadingSession Fault: Measurement run status with gpmid {0} not found.", Parameter.GlobalPropertyMatchingId); return(returnValue); } // Create new status history ORM_MRS_RUN_MeasurementRun_StatusHistory measurementRunStatusHistory = new ORM_MRS_RUN_MeasurementRun_StatusHistory(); measurementRunStatusHistory.Comment = ""; measurementRunStatusHistory.Creation_Timestamp = DateTime.Now; measurementRunStatusHistory.IsDeleted = false; measurementRunStatusHistory.MeasurementRun_RefID = measurementRun.MRS_RUN_MeasurementRunID; measurementRunStatusHistory.MeasurementRun_Status_RefID = measurementRunStatus.MRS_RUN_MeasurementRun_StatusID; measurementRunStatusHistory.Modification_Timestamp = DateTime.Now; measurementRunStatusHistory.MRS_RUN_MeasurementRun_StatusHistoryID = Guid.NewGuid(); measurementRunStatusHistory.Tenant_RefID = securityTicket.TenantID; measurementRunStatusHistory.TriggeredBy_BusinessParticipant_RefID = userAccount.BusinessParticipant_RefID; measurementRunStatusHistory.Save(Connection, Transaction); // Update measurement run status measurementRun.CurrentStatus_RefID = measurementRunStatus.MRS_RUN_MeasurementRun_StatusID; measurementRun.Save(Connection, Transaction); return(returnValue); #endregion UserCode }
protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L6MB_CUMBE_2302 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); var statusUploaded = ORM_MRS_RUN_MeasurementRun_Status.Query.Search(Connection, Transaction, new ORM_MRS_RUN_MeasurementRun_Status.Query() { GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(MeasurementRunStatus.Uploaded), Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Single(); var run = new ORM_MRS_RUN_MeasurementRun() { Tenant_RefID = securityTicket.TenantID, MRS_RUN_MeasurementRunID = Guid.NewGuid(), DateFrom = DateTime.Now, DateThrough = DateTime.MaxValue, CurrentStatus_RefID = statusUploaded.MRS_RUN_MeasurementRun_StatusID }; returnValue.Result = run.MRS_RUN_MeasurementRunID; var account = ORM_USR_Account.Query.Search(Connection, Transaction, new ORM_USR_Account.Query() { Tenant_RefID = securityTicket.TenantID, USR_AccountID = securityTicket.AccountID }).Single(); var runHistory = new ORM_MRS_RUN_MeasurementRun_StatusHistory() { Tenant_RefID = securityTicket.TenantID, MRS_RUN_MeasurementRun_StatusHistoryID = Guid.NewGuid(), MeasurementRun_Status_RefID = statusUploaded.MRS_RUN_MeasurementRun_StatusID, TriggeredBy_BusinessParticipant_RefID = account.BusinessParticipant_RefID, MeasurementRun_RefID = run.MRS_RUN_MeasurementRunID, Comment = string.Empty }; run.Save(Connection, Transaction); runHistory.Save(Connection, Transaction); foreach (var row in Parameter.Positions) { #region reader var readerPersonInfo = ORM_CMN_PER_PersonInfo.Query.Search(Connection, Transaction, new ORM_CMN_PER_PersonInfo.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, PrimaryEmail = row.ReaderEmail }).SingleOrDefault(); if (readerPersonInfo == null) { readerPersonInfo = new ORM_CMN_PER_PersonInfo() { Tenant_RefID = securityTicket.TenantID, PrimaryEmail = row.ReaderEmail, CMN_PER_PersonInfoID = Guid.NewGuid() }; } readerPersonInfo.FirstName = row.ReaderFirstName; readerPersonInfo.LastName = row.ReaderLastName; readerPersonInfo.Save(Connection, Transaction); var readerBP = ORM_CMN_BPT_BusinessParticipant.Query.Search(Connection, Transaction, new ORM_CMN_BPT_BusinessParticipant.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, IsNaturalPerson = true, IfNaturalPerson_CMN_PER_PersonInfo_RefID = readerPersonInfo.CMN_PER_PersonInfoID }).SingleOrDefault(); if (readerBP == null) { readerBP = new ORM_CMN_BPT_BusinessParticipant() { CMN_BPT_BusinessParticipantID = Guid.NewGuid(), Tenant_RefID = securityTicket.TenantID, IsNaturalPerson = true, IfNaturalPerson_CMN_PER_PersonInfo_RefID = readerPersonInfo.CMN_PER_PersonInfoID, }; readerBP.Save(Connection, Transaction); } var bpCode = ORM_CMN_BPT_BusinessParticipant_AccessCode.Query.Search(Connection, Transaction, new ORM_CMN_BPT_BusinessParticipant_AccessCode.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, BusinessParticipant_RefID = readerBP.CMN_BPT_BusinessParticipantID, IsValid = true, IsDeviceAccessCode = true }).SingleOrDefault(); if (bpCode == null) { bpCode = new ORM_CMN_BPT_BusinessParticipant_AccessCode() { CMN_BPT_BusinessParticipant_AccessCodeID = Guid.NewGuid(), Tenant_RefID = securityTicket.TenantID, BusinessParticipant_RefID = readerBP.CMN_BPT_BusinessParticipantID, IsValid = true, IsDeviceAccessCode = true, ValidFrom = DateTime.Now, ValidThrough = DateTime.MaxValue, Code = StringUtils.CodeGen(8).ToLower() }; bpCode.Save(Connection, Transaction); } #endregion #region meter var meter = ORM_MRS_MPT_Meter.Query.Search(Connection, Transaction, new ORM_MRS_MPT_Meter.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, SerialNumber = row.MeterSerialNumber }).SingleOrDefault(); if (meter == null) { meter = new ORM_MRS_MPT_Meter() { MRS_MPT_MeterID = Guid.NewGuid(), SerialNumber = row.MeterSerialNumber, Tenant_RefID = securityTicket.TenantID, }; meter.Save(Connection, Transaction); } var meterBinding = ORM_MRS_MPT_MeasuringPoint_MeterBinding.Query.Search(Connection, Transaction, new ORM_MRS_MPT_MeasuringPoint_MeterBinding.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, Meter_RefID = meter.MRS_MPT_MeterID }).SingleOrDefault(); if (meterBinding == null) { meterBinding = new ORM_MRS_MPT_MeasuringPoint_MeterBinding() { Tenant_RefID = securityTicket.TenantID, ActiveFrom = DateTime.Now, Meter_RefID = meter.MRS_MPT_MeterID, MRS_MPT_MeasuringPoint_MeterBindingID = Guid.NewGuid() }; meterBinding.Save(Connection, Transaction); } var measurentPoint = ORM_MRS_MPT_MeasuringPoint.Query.Search(Connection, Transaction, new ORM_MRS_MPT_MeasuringPoint.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, MRS_MPT_MeasuringPointID = meterBinding.MeasuringPoint_RefID }).SingleOrDefault(); if (measurentPoint == null) { measurentPoint = new ORM_MRS_MPT_MeasuringPoint() { Tenant_RefID = securityTicket.TenantID, MRS_MPT_MeasuringPointID = Guid.NewGuid() }; meterBinding.MeasuringPoint_RefID = measurentPoint.MRS_MPT_MeasuringPointID; meterBinding.Save(Connection, Transaction); measurentPoint.Save(Connection, Transaction); } #endregion #region customer var customerOwnership = ORM_MRS_MPT_CustomerOwnership.Query.Search(Connection, Transaction, new ORM_MRS_MPT_CustomerOwnership.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, ContractNumber = row.ContractNumber }).SingleOrDefault(); if (customerOwnership == null) { var customerPersonInfo = new ORM_CMN_PER_PersonInfo() { Tenant_RefID = securityTicket.TenantID, FirstName = row.ContractOwnerFirstName, LastName = row.ContractOwnerLastName, CMN_PER_PersonInfoID = Guid.NewGuid() }; customerPersonInfo.Save(Connection, Transaction); var customerBP = new ORM_CMN_BPT_BusinessParticipant() { CMN_BPT_BusinessParticipantID = Guid.NewGuid(), Tenant_RefID = securityTicket.TenantID, IsNaturalPerson = true, IfNaturalPerson_CMN_PER_PersonInfo_RefID = customerPersonInfo.CMN_PER_PersonInfoID, }; customerBP.Save(Connection, Transaction); var customer = new ORM_CMN_BPT_CTM_Customer() { Tenant_RefID = securityTicket.TenantID, CMN_BPT_CTM_CustomerID = Guid.NewGuid(), Ext_BusinessParticipant_RefID = customerBP.CMN_BPT_BusinessParticipantID }; customer.Save(Connection, Transaction); customerOwnership = new ORM_MRS_MPT_CustomerOwnership() { Tenant_RefID = securityTicket.TenantID, MRS_MPT_CustomerOwnershipID = Guid.NewGuid(), ContractNumber = row.ContractNumber, ValidFrom = DateTime.Now, Customer_RefID = customer.CMN_BPT_CTM_CustomerID, MeasuringPoint_RefID = measurentPoint.MRS_MPT_MeasuringPointID }; customerOwnership.Save(Connection, Transaction); } else { var customer = ORM_CMN_BPT_CTM_Customer.Query.Search(Connection, Transaction, new ORM_CMN_BPT_CTM_Customer.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, CMN_BPT_CTM_CustomerID = customerOwnership.Customer_RefID }).Single(); var customerBP = ORM_CMN_BPT_BusinessParticipant.Query.Search(Connection, Transaction, new ORM_CMN_BPT_BusinessParticipant.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, CMN_BPT_BusinessParticipantID = customer.Ext_BusinessParticipant_RefID }).Single(); var customerPI = ORM_CMN_PER_PersonInfo.Query.Search(Connection, Transaction, new ORM_CMN_PER_PersonInfo.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, CMN_PER_PersonInfoID = customerBP.IfNaturalPerson_CMN_PER_PersonInfo_RefID }).Single(); customerPI.FirstName = row.ContractOwnerFirstName; customerPI.LastName = row.ContractOwnerLastName; customerPI.Save(Connection, Transaction); } customerOwnership.MeasuringPoint_RefID = measurentPoint.MRS_MPT_MeasuringPointID; customerOwnership.Save(Connection, Transaction); #region address var address = ORM_CMN_Address.Query.Search(Connection, Transaction, new ORM_CMN_Address.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, City_Name = row.City, Street_Name = row.AddressName, Street_Number = row.AddressNumber, City_PostalCode = row.ZipCode }).SingleOrDefault(); if (address == null) { address = new ORM_CMN_Address() { Tenant_RefID = securityTicket.TenantID, City_Name = row.City, Street_Name = row.AddressName, Street_Number = row.AddressNumber, City_PostalCode = row.ZipCode, CMN_AddressID = Guid.NewGuid() }; address.Save(Connection, Transaction); } measurentPoint.CurrentAddress_RefID = address.CMN_AddressID; measurentPoint.Save(Connection, Transaction); #endregion #endregion #region route var route = ORM_MRS_RUT_Route.Query.Search(Connection, Transaction, new ORM_MRS_RUT_Route.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, DisplayName = row.RouteName }).SingleOrDefault(); if (route == null) { route = new ORM_MRS_RUT_Route() { Tenant_RefID = securityTicket.TenantID, MRS_RUT_RouteID = Guid.NewGuid(), DisplayName = row.RouteName, //Default_RouteReaderAccount_RefID = readerBP.CMN_BPT_BusinessParticipantID }; route.Save(Connection, Transaction); } var routeMeasuringPoint = ORM_MRS_RUT_Route_MeasuringPoint.Query.Search(Connection, Transaction, new ORM_MRS_RUT_Route_MeasuringPoint.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, Route_RefID = route.MRS_RUT_RouteID, MeasuringPoint_RefID = measurentPoint.MRS_MPT_MeasuringPointID }).SingleOrDefault(); if (routeMeasuringPoint == null) { routeMeasuringPoint = new ORM_MRS_RUT_Route_MeasuringPoint() { Tenant_RefID = securityTicket.TenantID, MRS_RUT_Route_MeasuringPointID = Guid.NewGuid(), Route_RefID = route.MRS_RUT_RouteID, MeasuringPoint_RefID = measurentPoint.MRS_MPT_MeasuringPointID }; } routeMeasuringPoint.OrderSequence = row.SequenceInRoute; routeMeasuringPoint.Save(Connection, Transaction); #endregion #region measurement var measurement = new ORM_MRS_RUN_Measurement() { Tenant_RefID = securityTicket.TenantID, MRS_RUN_MeasurementID = Guid.NewGuid(), MeasurementRun_RefID = run.MRS_RUN_MeasurementRunID, MeasuringPoint_RefID = routeMeasuringPoint.MRS_RUT_Route_MeasuringPointID }; measurement.Save(Connection, Transaction); var run2route = ORM_MRS_RUN_MeasurementRun_Route.Query.Search(Connection, Transaction, new ORM_MRS_RUN_MeasurementRun_Route.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, Route_RefID = route.MRS_RUT_RouteID, MeasurementRun_RefID = run.MRS_RUN_MeasurementRunID }).SingleOrDefault(); if (run2route == null) { run2route = new ORM_MRS_RUN_MeasurementRun_Route() { MRS_RUN_MeasurementRun_RouteID = Guid.NewGuid(), Tenant_RefID = securityTicket.TenantID, Route_RefID = route.MRS_RUT_RouteID, MeasurementRun_RefID = run.MRS_RUN_MeasurementRunID } } ; run2route.BoundTo_Account_RefID = readerBP.CMN_BPT_BusinessParticipantID; run2route.Save(Connection, Transaction); #endregion } return(returnValue); #endregion UserCode }
protected static FR_Base Execute(DbConnection Connection, DbTransaction Transaction, P_L6MRMS_PRS_1946 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { Random _rng = new Random((int)DateTime.Now.Ticks); string _chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //0123456789abcdefghijklmnopqrstuvwxyz"; int loopCountMax = 100; int loopCounter = 0; #region UserCode var returnValue = new FR_Base(); var status = ORM_MRS_RUN_MeasurementRun_Status.Query.Search(Connection, Transaction, new ORM_MRS_RUN_MeasurementRun_Status.Query() { GlobalPropertyMatchingID = Parameter.GlobalPropertyMatchingId, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Single(); var run = ORM_MRS_RUN_MeasurementRun.Query.Search(Connection, Transaction, new ORM_MRS_RUN_MeasurementRun.Query() { Tenant_RefID = securityTicket.TenantID, MRS_RUN_MeasurementRunID = Parameter.ReadingSessionId }).Single(); run.CurrentStatus_RefID = status.MRS_RUN_MeasurementRun_StatusID; run.Save(Connection, Transaction); var account = ORM_USR_Account.Query.Search(Connection, Transaction, new ORM_USR_Account.Query() { Tenant_RefID = securityTicket.TenantID, USR_AccountID = securityTicket.AccountID }).Single(); var runHistory = new ORM_MRS_RUN_MeasurementRun_StatusHistory() { Tenant_RefID = securityTicket.TenantID, MRS_RUN_MeasurementRun_StatusHistoryID = Guid.NewGuid(), MeasurementRun_Status_RefID = status.MRS_RUN_MeasurementRun_StatusID, TriggeredBy_BusinessParticipant_RefID = account.BusinessParticipant_RefID, MeasurementRun_RefID = run.MRS_RUN_MeasurementRunID, Comment = string.Empty }; runHistory.Save(Connection, Transaction); var runRoutes = ORM_MRS_RUN_MeasurementRun_Route.Query.Search(Connection, Transaction, new ORM_MRS_RUN_MeasurementRun_Route.Query() { Tenant_RefID = securityTicket.TenantID, MeasurementRun_RefID = run.MRS_RUN_MeasurementRunID, IsDeleted = false }).ToArray(); var distinctReaderBP = runRoutes.Select(s => s.BoundTo_Account_RefID).Distinct(); foreach (var readerBP in distinctReaderBP) { bool uniqueFlag = false; string codeValue; do { loopCounter++; if (loopCounter > loopCountMax) { return(null); } char[] buffer = new char[6]; for (int i = 0; i < buffer.Length; i++) { buffer[i] = _chars[_rng.Next(_chars.Length)]; } codeValue = new string(buffer); codeValue = codeValue.ToLower(); var codes = ORM_MRS_RUN_MeasurementRun_AccountDownloadCode.Query.Search( Connection, Transaction, new ORM_MRS_RUN_MeasurementRun_AccountDownloadCode.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, DownloadCode = codeValue }); if (codes.Count == 0) { uniqueFlag = true; } } while (!uniqueFlag); var runCode = new ORM_MRS_RUN_MeasurementRun_AccountDownloadCode() { Tenant_RefID = securityTicket.TenantID, Account_RefID = readerBP, MRS_RUN_MeasurementRun_AccountDownloadCodeID = Guid.NewGuid(), ValidFrom = DateTime.Now, ValidThrough = DateTime.MaxValue, MeasurementRun_RefID = run.MRS_RUN_MeasurementRunID, DownloadCode = codeValue }; runCode.Save(Connection, Transaction); } return(returnValue); #endregion UserCode }