public async Task AddMaintainedDoorLogEntry(HardwareMaintainedDoorLog log) { await this.DataUnitOfWork.HardwareMaintainedDoorLogRepository.AddLogEntry(log); }
public async Task <DoorDetail> SetWorkorderDoorHardwareMaintain(string workorderId, string doorId, DoorDetails selectedHardware, string userId) { var workorderDoors = await WorkorderDoorRepository.GetDoorByDoorIdAsList(workorderId, doorId); var wo = await this.ObjectsLocator.WorkorderService.GetWorkorderById(workorderId); if (workorderDoors != null) { var workorderDoor = workorderDoors.FirstOrDefault(); var hardware = workorderDoor.Door[selectedHardware.FieldName] as Hardware; if (hardware.IsMaintainable == true) { hardware.IsMaintained = selectedHardware.IsMaintained; var updatedDoor = await WorkorderDoorRepository.UpdateWordorderDoor(workorderDoor); //log if (wo != null) { await ObjectsLocator.LogService.AddMaintainedLogEntry( wo.ProjectId, wo.TemplateId, wo.Id, userId, new HardwareInDoorRequestModel { Content = hardware.Content, IsMaintained = hardware.IsMaintained, FieldName = selectedHardware.FieldName, Header = selectedHardware.Header, }, doorId, workorderDoor.Door.DoorNo, hardware.ChecklistId ); } } //check all maintainables are maintained string[] PROPS_TO_IGNORE = { "DoorNo", "Id", "ProjectId", "DoorQty", "AttachedProjectDocumentList", "Comment", "Building", "Revision", "MbeProductionId" }; PropertyInfo[] DOOR_PROP_INFO = typeof(Door).GetProperties(); bool everthingMaintained = true; foreach (PropertyInfo info in DOOR_PROP_INFO) { if (!PROPS_TO_IGNORE.Contains(info.Name)) { if (info.PropertyType.Equals(typeof(Hardware))) { var value = info.GetValue(workorderDoor.Door); Hardware hw = (Hardware)value; if (hw.IsMaintainable) { if (!hw.IsMaintained) { everthingMaintained = false; } } } } } if (everthingMaintained) { var log = new HardwareMaintainedDoorLog() { DoorId = workorderDoor.Door.Id, DoorNo = workorderDoor.Door.DoorNo, IsMaintained = true, ProjectId = wo.ProjectId, WorkorderTemplateId = wo.TemplateId, WorkorderId = wo.Id, Timestamp = DateTime.UtcNow, UserId = userId }; await this.ObjectsLocator.LogService.AddMaintainedDoorLogEntry(log); workorderDoor.FinishedDate = DateTime.UtcNow; await this.WorkorderDoorRepository.UpdateWordorderDoor(workorderDoor); } else { var logs = await this.ObjectsLocator.LogService.GetMaintainedDoorLogEntries(wo.ProjectId, wo.TemplateId, wo.Id); var log = logs.OrderByDescending(m => m.Timestamp).FirstOrDefault(); if (log != null && log.IsMaintained) { var logObj = new HardwareMaintainedDoorLog() { DoorId = workorderDoor.Door.Id, DoorNo = workorderDoor.Door.DoorNo, IsMaintained = false, ProjectId = wo.ProjectId, WorkorderTemplateId = wo.TemplateId, WorkorderId = wo.Id, Timestamp = DateTime.UtcNow, UserId = userId }; await this.ObjectsLocator.LogService.AddMaintainedDoorLogEntry(logObj); } if (workorderDoor.FinishedDate != null) { workorderDoor.FinishedDate = null; await this.WorkorderDoorRepository.UpdateWordorderDoor(workorderDoor); } } //--- return(new DoorDetail { FieldName = selectedHardware.FieldName, Header = selectedHardware.Header, Content = hardware.Content, IsMaintainable = hardware.IsMaintainable, IsMaintained = hardware.IsMaintained, ChecklistId = hardware.ChecklistId }); } return(null); }