示例#1
0
        public async Task <int> UpdateStatus(PrimaerdatenAuftragLog statusLog, int verarbeitungsKanal = 0)
        {
            using (var connection = new SqlConnection(connectionString))
            {
                await connection.OpenAsync();

                using (var tx = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                {
                    // Get Auftrag
                    var auftrag = await GetPrimaerdatenAuftragInternal(statusLog.PrimaerdatenAuftragId, connection);

                    // Update the status only, if it is not already erledigt
                    if (auftrag.Status != AufbereitungsStatusEnum.AuftragErledigt)
                    {
                        auftrag.Status = statusLog.Status;
                    }

                    auftrag.Service   = statusLog.Service;
                    auftrag.ErrorText = statusLog.ErrorText;

                    if (verarbeitungsKanal > 0)
                    {
                        auftrag.Verarbeitungskanal = verarbeitungsKanal;
                    }

                    // If the status is "erledigt" then add other important info.
                    if (auftrag.Status == AufbereitungsStatusEnum.AuftragErledigt)
                    {
                        auftrag.Abgeschlossen   = true;
                        auftrag.AbgeschlossenAm = DateTime.Now;
                    }

                    auftrag.ModifiedOn = DateTime.Now;
                    await UpdateAuftrag(auftrag, connection, true);

                    // Update log status
                    var logId = await InsertAuftragLog(statusLog, connection);

                    tx.Complete();
                    return(logId);
                }
            }
        }
示例#2
0
        private async Task <int> InsertAuftragLog(PrimaerdatenAuftragLog auftragLog, SqlConnection connection)
        {
            using (var cmd = connection.CreateCommand())
            {
                cmd.CommandText = @"
	INSERT INTO PrimaerdatenAuftragLog (PrimaerdatenAuftragId, Status, Service, ErrorText)
    OUTPUT INSERTED.PrimaerdatenAuftragLogId
	SELECT @PrimaerdatenAuftragId, @Status, @Service, @ErrorText
                ";

                #region parameters

                cmd.Parameters.Add(new SqlParameter
                {
                    ParameterName = "PrimaerdatenAuftragId",
                    Value         = auftragLog.PrimaerdatenAuftragId,
                    SqlDbType     = SqlDbType.Int
                });
                cmd.Parameters.Add(new SqlParameter
                {
                    ParameterName = "Status",
                    Value         = auftragLog.Status.ToString().ToDbParameterValue(),
                    SqlDbType     = SqlDbType.NVarChar
                });
                cmd.Parameters.Add(new SqlParameter
                {
                    ParameterName = "Service",
                    Value         = auftragLog.Service.ToString().ToDbParameterValue(),
                    SqlDbType     = SqlDbType.NVarChar
                });
                cmd.Parameters.Add(new SqlParameter
                {
                    ParameterName = "ErrorText",
                    Value         = auftragLog.ErrorText.ToDbParameterValue(),
                    SqlDbType     = SqlDbType.NVarChar
                });

                #endregion

                return(Convert.ToInt32(await cmd.ExecuteScalarAsync()));
            }
        }