// POST api/dataLists public IHttpActionResult Post([FromBody] DataListDTO dataListDTO) { var dataList = Mapper.Map <DataList>(dataListDTO); ModelState.Clear(); Validate(dataList); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (CurrentUser is SuperUser) { dataList.OrganisationId = Guid.Parse(dataListDTO.Organisation.Id); dataList.Organisation = null; } else { dataList.OrganisationId = CurrentOrganisationId.Value; dataList.Organisation = null; } var order = 1; foreach (var item in dataList.AllItems) { item.Order = order++; } try { UnitOfWork.DataListsRepository.InsertOrUpdate(dataList); UnitOfWork.Save(); MemoryCacher.DeleteStartingWith(CACHE_KEY); return(Ok()); } catch (Exception ex) { return(InternalServerError(ex)); } }
// PUT api/dataLists/{id} public IHttpActionResult Put(Guid id, [FromBody] DataListDTO dataListDTO) { if (id == Guid.Empty) { return(BadRequest("id is empty")); } var dataList = Mapper.Map <DataList>(dataListDTO); ModelState.Clear(); Validate(dataList); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var dbDataList = UnitOfWork.DataListsRepository.Find(id); dbDataList.Name = dataList.Name; UnitOfWork.DataListsRepository.InsertOrUpdate(dbDataList); var order = 1; foreach (var val in dataListDTO.Items) { var dbItem = UnitOfWork.DataListItemsRepository.Find(val.Id); if (dbItem == null) { dbItem = new DataListItem(); } if (val.IsDeleted) { UnitOfWork.DataListItemsRepository.Delete(dbItem); } else { Mapper.Map(val, dbItem); if (dbItem.Attributes != null) { var attributes = dbItem.Attributes.ToList(); foreach (var attr in attributes) { attr.OwnerId = dbItem.Id; Mapper.Map(val.Attributes.SingleOrDefault(a => a.Id == attr.Id), attr); } } if (val.Attributes != null) { var newAttributes = val.Attributes.Where(attr => attr.Id == Guid.Empty && attr.ValueId != Guid.Empty).ToList(); foreach (var attr in newAttributes) { var newAttr = Mapper.Map <DataListItemAttr>(attr); newAttr.OwnerId = dbItem.Id; dbItem.Attributes.Add(newAttr); } } dbItem.DataListId = id; dbItem.Order = order++; UnitOfWork.DataListItemsRepository.InsertOrUpdate(dbItem); } } try { UnitOfWork.Save(); MemoryCacher.DeleteStartingWith(CACHE_KEY); return(Ok()); } catch (Exception ex) { return(InternalServerError(ex)); } }