public IActionResult UpdateAttributeValuesRangeAsync([FromBody] HotelAttributeValueUpdateRangeModel model, string hotelId) { var hotelIdDecryped = hotelId.DecryptToInt32(); if (hotelIdDecryped != 0) { model.HotelFid = hotelIdDecryped; var response = _hotelAttributeValueService.UpdateAttributeValueRangeAsync(model).Result; return(Ok(response)); } return(Ok(BaseResponse <bool> .BadRequest())); }
public async Task <BaseResponse <bool> > UpdateAttributeValueRangeAsync(HotelAttributeValueUpdateRangeModel updateModel) { try { if (updateModel == null) { return(BaseResponse <bool> .BadRequest()); } var userId = GetUserGuidId(); if (updateModel == null || updateModel.ListAttributeId == null || updateModel.ListAttributeValue == null) { return(BaseResponse <bool> .BadRequest()); } if (_db.HotelAttributeValues.AsNoTracking().Any(k => k.AttributeCategoryFid == updateModel.AttributeCategoryFid && k.HotelFid == updateModel.HotelFid)) { if (updateModel.ListAttributeId.Count() == 0 && updateModel.ListAttributeValue.Count() == 0) { var data = _db.HotelAttributeValues.Where(k => k.AttributeCategoryFid == updateModel.AttributeCategoryFid && k.HotelFid == updateModel.HotelFid); _db.RemoveRange(data); _db.SaveChanges(); return(BaseResponse <bool> .Success(true)); } else { // step 1 : remove all current attribute of Hotel in db var data = _db.HotelAttributeValues.Where(k => k.AttributeCategoryFid == updateModel.AttributeCategoryFid && k.HotelFid == updateModel.HotelFid); _db.RemoveRange(data); _db.SaveChanges(); // step 2: add new all attribute to db if (updateModel.ListAttributeId.Count() > 0 && updateModel.ListAttributeValue.Count() > 0 && updateModel.ListAttributeId.Count() == updateModel.ListAttributeValue.Count()) { var listAttributeId = updateModel.ListAttributeId; var listAtrributeValue = updateModel.ListAttributeValue; var lstattribute = new List <HotelAttributeValues>(); for (int i = 0; i < listAttributeId.Count; i++) { var attributeValue = new HotelAttributeValues() { HotelFid = updateModel.HotelFid, AttributeCategoryFid = updateModel.AttributeCategoryFid, AttributeFid = listAttributeId[i], AttributeValue = listAtrributeValue[i], EffectiveDate = DateTime.Now, LastModifiedBy = userId, LastModifiedDate = DateTime.UtcNow }; // add to list lstattribute.Add(attributeValue); } if (lstattribute.Count > 0) { await _db.HotelAttributeValues.AddRangeAsync(lstattribute); await _db.SaveChangesAsync(); return(BaseResponse <bool> .Success(true)); } } return(BaseResponse <bool> .NoContent(false)); } } else { if (updateModel.ListAttributeId.Count() > 0 && updateModel.ListAttributeValue.Count() > 0 && updateModel.ListAttributeId.Count() == updateModel.ListAttributeValue.Count()) { var listAttributeId = updateModel.ListAttributeId; var listAtrributeValue = updateModel.ListAttributeValue; var lstattribute = new List <HotelAttributeValues>(); for (int i = 0; i < listAttributeId.Count; i++) { var attributeValue = new HotelAttributeValues() { HotelFid = updateModel.HotelFid, AttributeCategoryFid = updateModel.AttributeCategoryFid, AttributeFid = listAttributeId[i], AttributeValue = listAtrributeValue[i], EffectiveDate = DateTime.Now, LastModifiedBy = userId, LastModifiedDate = DateTime.UtcNow }; // add to list lstattribute.Add(attributeValue); } if (lstattribute.Count > 0) { await _db.HotelAttributeValues.AddRangeAsync(lstattribute); await _db.SaveChangesAsync(); return(BaseResponse <bool> .Success(true)); } } return(BaseResponse <bool> .NoContent(false)); } } catch (Exception ex) { return(BaseResponse <bool> .InternalServerError(message : ex.Message, fullMsg : ex.StackTrace)); } }