public async Task <CheckListEquipmentUI> GetCheckListByEquipmentModelId(int id) { using (var conn = new SqlConnection(AppSettings.ConnectionString)) { var sql = Sql.SqlQueryCach["Equipment.GetCheckListsByEquipmentId"]; var result = (await conn .QueryAsync <CheckListEquipment, EquipmentModel, Equipment, CheckListEquipment>( sql, (ce, em, equipment) => { em.Equipment = equipment; ce.EquipmentModel = em; return(ce); }, new { equipment_model_id = id })).ToArray(); var algos = new List <Algorithm>(); var ret = new CheckListEquipmentUI(); if (result.Any()) { var first = result.FirstOrDefault(); ret.Id = first.EquipmentModel.Id; ret.Equipment = first.EquipmentModel.Equipment; algos.AddRange(result.Select(row => new Algorithm { CheckListType = row.CheckListType, FaultType = row.FaultType, NameTask = row.NameTask, Value = row.Value, ValueType = row.ValueType })); //добавим алгоритмы (нулл), которые не сохранены в бд, но нужны UI foreach (CheckListType cType in Enum.GetValues(typeof(CheckListType))) { if (cType == CheckListType.Surrender) { continue; } var already = algos.Where(item => item.CheckListType == cType).ToList(); if (already.Count != 0) { continue; } algos.Add(new Algorithm { CheckListType = cType }); } ret.Algorithms = algos.ToArray(); } else { ret = null; } return(ret); } }
public async Task <JsonResult> AddUpdateEquipmentWithCheckLists([FromBody] CheckListEquipmentUI ces) { await CheckPermission(); var er = new EquipmentRepository(_logger); var ret = await er.AddOrUpdateEquipmentWithCheckLists(ces); return(Json(ret)); }
public bool IsEquipmentChecklistsEmpty(CheckListEquipmentUI eq) { bool check = true; foreach (var algo in eq.Algorithms) { if (algo.NameTask != null) { check = false; } } return(check); }
public async Task DeleteEquipmentWithCheckLists(CheckListEquipmentUI eq) { //Начинаем блядь КВН using (var transaction = new TransactionScope(asyncFlowOption: TransactionScopeAsyncFlowOption.Enabled)) { using (var conn = new SqlConnection(AppSettings.ConnectionString)) { var mr = new ModelRepository(_logger); //сначала удалим чеклисты await _DeleteCheckListsFromEquipment(eq.Id); //затем связку с моделями await mr.DeleteEquipmentFromModel(eq.Id); } transaction.Complete(); } }
public async Task <CheckListEquipmentUI> AddOrUpdateEquipmentWithCheckLists(CheckListEquipmentUI ces) { if (ces == null) { throw new Exception("Не указано наименование"); } //Начинаем блядь КВН using (var transaction = new TransactionScope(asyncFlowOption: TransactionScopeAsyncFlowOption.Enabled)) { using (var conn = new SqlConnection(AppSettings.ConnectionString)) { if (ces.Id == 0) { //insert new EquipmentModel, get Id var em = new EquipmentModel { ModelId = ces.ModelId, EquipmentId = ces.Equipment.Id, ParentId = ces.ParentId, IsMark = ces.IsMark }; var mr = new ModelRepository(_logger); em = await mr.AddEquipmentToModel(em); ces.Id = em.Id; ces.Algorithms = new List <Algorithm>().ToArray(); } else { var mr = new ModelRepository(_logger); await mr.UpdateEquipment(new EquipmentModel { EquipmentId = ces.Equipment.Id, Id = ces.Id, IsMark = ces.IsMark }); } // var listAdded = new List <CheckListType>(); foreach (var algo in ces.Algorithms) { //if (string.IsNullOrEmpty(algo.NameTask) || algo.FaultType == null) // throw new Exception("Не заполнены Алгоритмы"); if (string.IsNullOrEmpty(algo.NameTask) || algo.Value == null || algo.ValueType == null) { continue; } await AddOrUpdateCheckListToEquipment(ces.Id, algo); listAdded.Add(algo.CheckListType); } foreach (CheckListType cType in Enum.GetValues(typeof(CheckListType))) { if (cType == CheckListType.Surrender) { continue; } var already = listAdded.Where(item => item == cType).ToList(); if (already.Count == 0) { await DeleteCheckListFromEquipment(new CheckListEquipment { CheckListType = cType, EquipmentModelId = ces.Id }); /*var algo = new Algorithm * { * CheckListType = cType * }; * await AddOrUpdateCheckListToEquipment(ces.Id, algo);*/ } } var shit = await GetCheckListByEquipmentModelId(ces.Id); transaction.Complete(); return(shit); } } }