Fix alarm note/file foreign keys and query

This commit is contained in:
Lucio Maranta
2019-01-14 14:57:30 +01:00
parent 4146b49856
commit 50dc27d480
12 changed files with 228 additions and 210 deletions
+16 -14
View File
@@ -59,7 +59,7 @@ namespace Step.Database.Controllers
&& ( (ifNoUser && x.Users.Count() == 0) || x.Users.Any(y => userIds.Any(z => z == y.UserId))) // Check user
&&
((x.Source == ALARM_SOURCE.NC && ncAlarmDescIds.Contains(x.AlarmDescriptionId.Value)) // Check if message is contained in NC messages
|| (x.Source == ALARM_SOURCE.PLC && plcAlarmDescIds.Contains(x.PlcMessageId.Value))) // Check if message is contained in PLC messages
|| (x.Source == ALARM_SOURCE.PLC && plcAlarmDescIds.Contains(x.AlarmId))) // Check if message is contained in PLC messages
)
.Skip(page * pageSize) // Paginate
.Take(pageSize)
@@ -116,21 +116,21 @@ namespace Step.Database.Controllers
};
}
public AlarmDescriptionsModel FindById(int id)
public AlarmOccurrencesModel FindById(int id, ALARM_SOURCE source)
{
return dbCtx
.AlarmDescriptions
.Where(x => x.AlarmId == id)
.AlarmOccurrences
.Where(x => x.AlarmId == id && x.Source == source)
.FirstOrDefault();
}
#region NOTES
public List<DTOAlarmNoteModel> GetNotesByAlarmDescId(int alarmDescriptionId)
public List<DTOAlarmNoteModel> GetNotesByAlarmDescId(int alarmDescriptionId, ALARM_SOURCE source)
{
return dbCtx
.AlarmsNotes
.Where(x => x.AlarmDescriptionId == alarmDescriptionId) // Filter by id
.Where(x => x.AlarmId == alarmDescriptionId && x.Source == source) // Filter by id
.Select(x => new DTOAlarmNoteModel() // Convert to return model
{
Id = x.NoteId,
@@ -156,15 +156,16 @@ namespace Step.Database.Controllers
.FirstOrDefault();
}
public DTOAlarmNoteModel CreateNote(int userId, int alarmDescId, DTONewAlarmNoteModel newNote)
public DTOAlarmNoteModel CreateNote(int userId, int alarmId, ALARM_SOURCE source, DTONewAlarmNoteModel newNote)
{
// Create model
AlarmNoteModel note = new AlarmNoteModel()
{
Message = newNote.Message,
DateTime = DateTime.Now,
AlarmDescriptionId = alarmDescId,
UserId = userId
AlarmId = alarmId,
UserId = userId,
Source = source
};
// Add & save into database
dbCtx.AlarmsNotes.Add(note);
@@ -197,11 +198,11 @@ namespace Step.Database.Controllers
#region ATTACHMENT
public List<AlarmFileModel> FindAttachmentByAlarmDescId(int alarmDescId)
public List<AlarmFileModel> FindAttachmentByAlarmDescId(int alarmId, ALARM_SOURCE source)
{
return dbCtx
.AlarmFiles
.Where(x => x.AlarmDescriptionId == alarmDescId)
.Where(x => x.AlarmId == alarmId && x.Source == source)
.ToList();
}
@@ -213,15 +214,16 @@ namespace Step.Database.Controllers
.FirstOrDefault();
}
public AlarmFileModel AddAttachment(string fileName, string localFileName, int alarmDescId, int userId)
public AlarmFileModel AddAttachment(string fileName, string localFileName, int alarmId, int userId, ALARM_SOURCE source)
{
// Create obj
AlarmFileModel file = new AlarmFileModel()
{
FileName = fileName,
LocalFileName = localFileName,
AlarmDescriptionId = alarmDescId,
UserId = userId
AlarmId = alarmId,
UserId = userId,
Source = source
};
// Add to db
dbCtx.AlarmFiles.Add(file);